読んでいただきありがとうございます。なぜこのJavascriptはOperaやChromeで動作しませんか?
私は、次のように構築されているいくつかのスクリプトがあります。
scriptone.js
function FunctionOne(){
// Do a bit of work...
// Include a second javascript file, scripttwo.js
// that contains a function called FunctionTwo.js
var scrb = document.createElement('script');
scrb.type = 'text/javascript';
scrb.src = 'http://www.example.com/scripttwo.js?bunchofargs=varied';
// Append it to the head.
document.getElementsByTagName('head')[0].appendChild(scrb);
// Can't run the second function directly, because it may not be loaded quite yet,
// So use the Waiter function.
Interval = setInterval("Waiter()", 10);
// All done.
return;
}
function Waiter(){
if(window.FunctionTwo) {
clearInterval(Interval);
FunctionTwo();
}
}
scripttwo.js
function FunctionTwo(){
document.write('something based on calling page');
}
これはFFと正常に動作をし、 IEは使用できますが、OperaやChromeでは使用できません。 Chrome/Operaでは、すべてがスクリプト1でうまくいくようです。しかし、実際にはscripttwo.jsで起こっていることはありません。 scripttwo.jsが含まれていないかのようです。
これはOperaまたはChromeで動作しない理由は何ですか?
恐らく私は互換性のないものを使用していますか、私が気づいていないセキュリティ機能がありますか?すべてのファイルは同じドメインにあります。
注 グレート回答 - 本当にありがとうございました!
FuncionOneは実際のコードではちょっとタイプミスですが、私はより良い関数名を使用しますが、わかりやすくするためにここで変更しました。私はジョー・ホワイトとは同意しますが、それは問題ではないはずです。 JavaScript(私の弱い言語の1つ)で、誰が知っていますか? FunctionOneは、HTMLドキュメントの先頭または本文のいずれかから呼び出されます。
また、スクリプト2の最後にFuncTwoを追加して、タイマーを完全に避けるというアイデアが気に入っています。誰かがあなたにそれを指摘したら、きれいで、とても明白です。
私は次の作業をしてから更新します。
を再度更新:
こんにちはすべて、
私は今、それはFF、IE、とChromeで働いていますが、オペラは今、まったくの.jsファイルをロードすることを拒否しているようです。私はこれが何らかのオペラの問題(Opera: .js file won't load)だと思っていて、他の3人と一緒に進めます。それがどのようになったかを教えてください。
間隔は、varとしてローカルに宣言されていません。したがって、暗黙のうちにWindow.Interval(JavaScriptについて嫌なことの1つ)です。スコープは問題ではありません。 –
コードが正常に動作することを確認しても、一部のプラットフォームでは正しく動作しない場合は、最初に必要なことをターゲットにする必要があります。各主要ブラウザは独自のJavascript実装を実行しているので、ギャップを埋めるための範囲がたくさんあります。 – Oli