2016-10-28 8 views
0

私のWebページでは、私はこのようなスクリプトがあります。以下に示すようにファイルは、スクリプトが含まれているページが更新されたら、スクリプトが正しく実行取得 - jqueryの

<head> 
<script src="scripts/effect.js"></script> 
<script> 
if (document.readyState == 'complete') { 
    doOnLoad(); 
} 
$(window).bind("load", doOnLoad); 
function doOnLoad() { 
    console.log("here.."); 
} 
</script> 
</head> 

effect.js:

$(document).ready(function(){ 
    console.log("yes"); 
    // here I've script for reading a text file using ajax and manipulating the result from text file 
    $.ajax({ 
     // code goes here 
     console.log("ajax"); 
    }); 
}); 

問題をそのページを最初に実行すると結果が得られません。その時私は

yes 
here.. 
ajax 

としてコンソール出力を取得するしかし、私はもう一度ページを更新すると私のような結果とコンソール版画取得しています:

yes 
ajax 
here.. 

document.readyが完了した後にどのように私はwindow.loadを実行することができます。

誰でもこの問題を解決する手助けはできますか?前もって感謝します。

+0

それは私のために正常に動作し、私はイエス初期ロードのhere..'も – jakob

+0

それは、単純な競合状態のように聞こえる '取得しています。興味のないところでは、リロード時に 'effect.js'がキャッシュから取り出されますか? –

+0

@ jakob .. 'document.ready'の中にいくつかのスクリプトがあります。' window.load'の後で実行しています。 'window.load'の前に実行したいと思います。 – Jenz

答えて

0

これは、スクリプト実行のタイミングに関するものです。特定のリソースがロードされてキャッシュされると、動作が変化しているように見えます。あなたが持っているコードの

最初の部分は少し混乱して:

if (document.readyState == 'complete') { 
    doOnLoad(); 
} 

あなたは、このだけでなく、負荷ハンドラに必要とする理由私はわからないんだけど?とにかく、そのコードはドキュメントの読み込みが完了する直前に実行されるため、条件は決して真となることはないようです。最低でも、私はこのブロックにconsole.logを置くので、doOnLoadを引き起こすものを特定することができました。

はちょうど次のためにあなたのページにスクリプトを交換してみてください:

$(window).on("load", doOnLoad); 
function doOnLoad() { 
    console.log("here.."); 
} 
+0

@ Andrew..Still no change .. – Jenz

関連する問題