1

私のウェブサイトで、クロム拡張機能がインストールされているかどうかにかかわらず、検出したい。通常、カスタムスクリプトを使用していくつかを作成します

<div id="extensionExists"></div>.

ただし、Web サイトの JavaScript が実行される前に拡張子を検出したいと考えています。画像が完全に読み込まれるのを待ちたくないので、window.onload() の代わりに document.ready() を使用しています。ただし、事前にdivを作成できません。コンテンツ スクリプトで run_at:"document start" を使用している場合、まだ div を作成できません。"document end" を使用している場合、手遅れです。document.ready() は既に実行されています。

何か案は?

4

1 に答える 1

0

うーん...私の知る限り、きれいな解決策はありません。私の唯一のアイデアは、ドキュメントが完全に読み込まれる前にMutationObserverを使用してドキュメントにアクセスすることですが、今は適切にテストする時間がありません...

var obs = new WebKitMutationObserver(function ( mutations ) {
  console.log( mutations );
  mutations.forEach(function ( mutation ) {
    var newNodes = mutation.addedNodes;
    console.log( newNodes );
    // newNodes should now contain a NodeList which contains all nodes that were created right now
    // you should be able to create your element now
    // consider using obs.disconnect(); after you have found your entry point.
  });
});

obs.observe( document, { childList: true } );

それが何かをするという保証はありません。jsFiddle はドキュメントの前にスクリプトを追加することを許可していないため、そこでテストすることさえできませんでした。

于 2013-01-14T16:26:08.530 に答える