• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:firefoxやsafariへの対応。)

firefoxやsafariへの対応について

このQ&Aのポイント
  • firefoxやsafariへの対応について質問があります。特定のウェブページでJavascriptを利用したいのですが、firefoxでは正常に動作せず、safariではundefinedが表示されます。OperaとIEでは問題なく機能しています。ソースコードを確認しましたが、一部のコードがsafariとfirefoxに対応していない可能性があります。JavaScriptに詳しい方、対応方法を教えていただけないでしょうか。
  • firefoxやsafariでの対応について質問です。特定のウェブページでJavascriptを使用したいのですが、firefoxでは正しく動作せず、safariではundefinedが表示されます。一部のコードがfirefoxやsafariに適応されない可能性があります。バージョンは最新です。JavaScriptに詳しい方、対応策を教えていただけませんか?
  • firefoxやsafariへの対応方法について教えてください。特定のウェブページでJavaScriptを使いたいのですが、firefoxでは正常に動作せず、safariではundefinedが表示されます。OperaとIEでは問題なく動作しています。ソースコードを確認しましたが、一部のコードがfirefoxやsafariに対応していない可能性があります。JavaScriptに詳しい方、解決策を教えていただけませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • my--
  • ベストアンサー率89% (91/102)
回答No.2

var all = document.all; var el = document.activeElement; all, activeElementプロパティが使われてますよね。 ブラウザによって差異があるようですから、これが原因ではないかと。 //var all = document.all; var all = document.getElementsByTagName('a'); //var el = all(i); var el = all[i]; //var el = document.activeElement; var el = this; こんな感じでどうだろか。 機能面の拡張なら別ですが、不具合という事ならここでやるより サイト管理者と直接やり取りして修正してもらった方が 有益性は高いと思いますけど。あくまで個人的に。

TPR_SET
質問者

お礼

ご回答有難うございます。 お教えいただいたコードで試したところ 自分がインストールしてる全てのブラウザで正常に動作することが確認出来ました。 自身でどれだけ勉強しても、ここまでたどり着くことは到底無理そうだったので 感謝・感激です!

その他の回答 (3)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.4

No1です。 すでにNo2様がご指摘になっていますが、ご提示のサイトの方法だと通信そのもの以外の部分にクロスブラウザでなさそうな記述がありますね。 もっというならば、その方法だとHTML内の各リンク要素にonclickイベントを設定するようになっていますので、もとのHTMLにonclickの設定(他の目的のために)されていたりする場合上書きされてしまうため、元の機能が失われてしまうことになります。(そのようなものが一切なければ問題ありませんが) 安全を期すのなら、ドキュメントレベルにクリックイベントを一つだけ設定して、リンク要素のクリックだったら送信するようなものにするほうが、手間も少なくなりますし賢明かと思います。(設定も、addEventListenerを用いるなどの方法で) >非同期通信にした場合は、どのような動作の違いがでるのでしょうか? 一般的には、同期していないのでサーバーからのレスポンスを監視していないと受け取った後の処理にかかれないと言う違いがあります。 コード上での違いは先ほどの回答の参考サイトにあるように、第3引数のfalse、trueの違いで書き分けています。 でも、ご質問のような使い方の場合だと、サーバ側のcgiをどのように作成しておくかにもよりますが、cgiから出力をしなければスクリプト側で受け取る必要がないので、送信しっぱなしでもよさそうな気がしますけれど…(そのままでよいのか、正確にはわかりません)

TPR_SET
質問者

お礼

ご回答有難うございます。 my--様にお教えいただいたコードで解決出来ました。 非同期通信についても詳しくお教えくださり有難うございます。 大変勉強になりました。 JavaScriptは、環境によって動作しないこともあり、 昔から勉強するつもりがなかったのですが、 今回のような機能を含めて、かなり便利な機能を実装できることがわかりましたので、 今後は、javaScriptの勉強も始めてみようと思います。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

同期・非同期の違いとか、リクエストヘッダーのMIME指定 とか試して見ようとしてふと、思ったんですが このサイトのJSの根本にある var all = document.all; var n = all.length; ってFirefoxでももう大丈夫になったんでしたっけ?

TPR_SET
質問者

お礼

有難うございます。 my--様にお教えいただいた方法で解決できました。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

ajax関連はよく知らないのですが… 方法は良く見かける方法なので、ちょっと調べてみました。 mozilla系の場合はこんな仕様みたいですね。  https://developer.mozilla.org/ja/Using_XMLHttpRequest  https://developer.mozilla.org/ja/XMLHttpRequest ご提示のサイトではstatusのチェックを行なっていないところが違いますが、とりあえずは送信しっぱなしでも目的は果たしているので、ご提示のケースでは特に問題にはならないと思われますが… 似たようなテストサイトがありましたので、そちらでも試してみました。  http://jsgt.org/ajax/ref/test/async/test1_1.htm fx(safariは手元に無い)だと、同期通信の場合どうもうまくいっていないみたい・・・ このあたりが関係しているのかも?  http://www.fraction.jp/log/archives/2005/03/216 (ご提示のサイトではgetなので、そのままは該当しませんけれど) よく見かけるクロスブラウザの方法はこんな感じです。  http://webos-goodies.jp/archives/50548720.html  http://d.hatena.ne.jp/keyword/XMLHttpRequest あまり自分で試したことがないのでわかってませんが、みな同様の結果になると思うのですが… 解決法の一つとしては、非同期通信にすれば(↑)のテストサイトでも大丈夫みたいですし、この方法は多くのサイトでも用いられていると思います。 他の方法としては、ajax用のライブラリを利用するとか。(prototypeやjqueryやExtJSなど)

TPR_SET
質問者

お礼

有難うございます。 ページ内リンクがクリックされた時に、cgi(./history.cgi)にどのリンクがクリックされたかを知らせることが出来ればいいのですが、 質問スクリプトを非同期通信にした場合は、どのような動作の違いがでるのでしょうか? また、非同期通信について今調べているのですが、JavaScriptにつていの知識がないので、 質問スクリプトをどのように書き換えれば非同期通信として動作させることができるか わかりませんでした。お手数をおかけして恐縮ですが、 どのように書き換えればいいのか、お教えいただけると幸いです。

関連するQ&A

専門家に質問してみよう