8

コンテンツ スクリプトで jQuery/Zepto を使用する chrome 拡張機能を開発しています。現在、拡張機能はすべての Web サイトで実行されるようになっています。つまり、ユーザーが開く各タブに jQuery/Zepto のコピーが読み込まれます。

さまざまなコンテンツ スクリプト間で jQuery/Zepto オブジェクトを共有する方法はありますか?

コンテンツ スクリプトがバックグラウンド スクリプトと通信できることはわかっています。バックグラウンド スクリプトが jQuery オブジェクトにアクセスできるようにして、それへの参照を各コンテンツ スクリプトに返すことができるようにしたいと考えていました。しかし、コンテンツとバックグラウンド スクリプトの間で受け渡しできるのは JSON メッセージだけであることに気付きました。

私が望むものを達成する方法はありますか?

4

2 に答える 2

9

異なるタブのコンテンツ スクリプトも、互いの JavaScript オブジェクトにアクセスできません。

chrome.runtime.sendMessageChrome は、 +を介したコンテンツ スクリプトやバックグラウンド ページ間の通信をサポートしています.onMessage。すべてのメッセージは JSON でシリアル化されるため、この方法で JavaScript オブジェクトを他のコンテキストに「リーク」することはできません。

したがって: いいえ、jQuery などのオブジェクトを (コンテンツ スクリプト内の) 他のタブと共有することはできません。

于 2012-12-04T13:40:06.550 に答える
1

コンテンツスクリプトの実行環境により、コンテンツスクリプトが相互に通信できるようになります

元:

"content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["myscript.js","myscript1.js"]
    }
  ]
}

コンテンツスクリプトが 挿入された個別のDOM環境では、のすべてのコンテンツ(関数、変数)にアクセスできますが、これにより、2つの個別のDOM環境が通信できなくなります。["myscript.js","myscript1.js"]myscript1.jsmyscript.js

そうは言っても、メッセージパッシングが挿入されたページのDOMにアクセスするためにバックグラウンドページを必要とする要件を要求するコンテンツスクリプトに見られる制限/要件は何ですか?

詳しく説明してください

于 2012-12-03T10:38:15.207 に答える