18

私は自分のサイト用に作成しているクロム拡張機能を持っています。現在、拡張機能がデータベースの更新を毎分チェックしています。

拡張機能が実際のページでイベントをリッスンすることは可能ですか?

このようなもの

this.trigger('sendUpdate', data) //this happened on the page

this.on(sendUpdate, function(){ //this is what the chrome extension listens for
    //do stuff with data
})
4

1 に答える 1

32

content_script を追加する必要があります。content_script には DOM へのフル アクセスがあり、ページ上のすべてのイベントにバインドできます。

これをmenifestファイルに追加するだけです

"content_scripts":[{
    "matches":["http://*/*","https://*/*"],
    "js":"your injected script.js"
}]

詳細情報を入手できますhttps://developer.chrome.com/docs/extensions/mv2/content_scripts/

また、あなたの質問から、カスタムイベントで作業するように見えるので、 content_scrip js はこれに似たものになります

document.addEventListener('yourEventName', function(e){
   //send message to ext
   var someInformation = {/*your msg here*/}
   chrome.extension.sendMessage(someInformation, function(response) {
      //callback
   });
}, false);

バックグラウンド ページはメッセージをリッスンする必要があります。

chrome.extension.onMessage.addListener(function(myMessage, sender, sendResponse){
    //do something that only the extension has privileges here
    return true;
 });

次に、ページ上のすべてのスクリプトからイベントをトリガーできます...

var evt = document.createEvent('Event');
evt.initEvent('yourEventName', true, true);
var some_element = document;
some_element.dispatchEvent(evt);
于 2013-02-11T15:44:27.713 に答える