2016-05-17 2 views
0

次の動作は問題ありません。 #testlinkをクリックして起動します。jQuery dispatchEventはDOMロードで起動しません

jQuery(document).ready(function() { 
    jQuery("#testlink").on("click", function(event) { 
     document.dispatchEvent(new CustomEvent('funcTest', { 
      'detail': { 
       test: 'stuff' 
      } 
     })); 
    }); 
}); 

は今、私はときに、Webページが読み込まそれが火にしたい、on.clickせずに同じことをしたいです。ので、onclickを削除します。

jQuery(document).ready(function() { 
    document.dispatchEvent(new CustomEvent('funcTest', { 
     'detail': { 
      test: 'stuff' 
     } 
    })); 
}); 

しかし、動作しません。何も起こりません。どうして?ページが読み込まれたら、これをどのように起動させることができますか?

+0

コードは動作するはずです:https://jsfiddle.net/a87umsjh/ - 'funcTest'のイベントハンドラは' dispatchEvent'コールの前に割り当てられていますか? – Andreas

+0

はい、私はそれが起こっていると思います。 funcTestは実際にはChrome拡張機能の一部であるcontent.jsにあります。それは別のサンドボックスにあります。あまりにも遅く割り当てられている必要がありますか?どのように私はそれを修正するだろうか?私は愚かだと思うsetTimeoutを試してみます。 –

+0

これはsetTimeoutで動作します。タイムアウトが2または10のような超低であっても、私がタイムアウトをコメントアウトするとすぐにそれはもはや起動しません。私はsetTimeoutが醜いと思う。待たずにfuncTestを呼び出すより良い方法があります。 –

答えて

0

何らかの理由でマニフェストに「run_at」:「document_start」を追加すると、コンテンツスクリプトの読み込み速度が向上します。

関連する問題