2012-03-22 6 views
2

私はこのuserscriptを持っている:window.loadは常にchromeで起動しませんか?

// ==UserScript== 
// @name   test 
// @namespace  test 
// @description show's an alert on load 
// @include  http://* 
// @include  https://* 
// ==/UserScript== 

window.addEventListener('load', function(){alert("loaded");}, false); 

これは、すべてのページ上のFirefoxで正常に動作しますが、いくつかの場面でChromeで全く動作しません。

この例は、このWebサイトです:http://lexin.nada.kth.se/lexin/ アドレスにリンクを入力してenterを押すと、ページは正常に読み込まれますが、アラートはポップアップされません。 F5キーを押してページを更新すると、ポップアップが表示されます。

この奇妙な動作には何らかの説明がありますか?

+1

@mgraph 'window.onload'すべて小文字 – JaredMcAteer

答えて

7

この問題の原因は、ドキュメントが既に完全にロードされる。文書が作成される前にスクリプトを実行させる@run-at document-startメタルールを使用し、問題を解決するために

// ==UserScript== 
// @name   Test 
// @namespace  Test 
// @include  * 
// ==/UserScript== 

window.addEventListener('load', function(){alert("loaded");}, false); 
alert(document.readyState); // When this prints "complete", onload never runs 

:これは、次の内容のスクリプト(「ユーザースクリプト」)を使用して示されている

... 
// @run-at document-start 
// ==/UserScript== 
+0

ありがとう!それがそれを解決しました。 – Pithikos

0

この呼び出しは、ページに読み込まれていない可能性があります。このコードをページの最上部に追加し、それが修正されているかどうかを確認します。

そうでない場合は、追加情報を投稿してください。 (呼び出しが行われている場所、ページの詳細、外部の.jsファイルから呼び出されていますか)

+0

これは、あなたがchromeを持っているならブラウザにドラッグ&ドロップするだけのユーザスクリプトです。それはそれ自身のサンドボックス上のすべてのページで自動的に実行されます。 – Pithikos

関連する問題