与注入的.js文件通信

时间:2014-05-19 15:46:59

标签: javascript javascript-events google-chrome-extension

我正在尝试制作一个控制Youtube的简单Chrome扩展程序。 我用方法1注入了直接控制Youtube的脚本 Insert code into the page context using a content script。这就是注入脚本的样子。

control.js

var player = document.getElementById("movie_player");

//Do something

document.addEventListener('Remote2Buffer', function(e){
    alert(e.detail);
});

在名为buffer.js的content_script文件中,我希望control.js从中接收信息。所以我从buffer.js发送了'Remote2Buffer'事件。但是control.js上的警报不起作用,这意味着数据未按预期发送。这就是buffer.js的样子。

buffer.js

var s = document.createElement('script');
s.src = chrome.extension.getURL('control.js');
s.onload = function(){
    this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);

var send ='plz work';
document.dispatchEvent(new CustomEvent('Remote2Buffer', {detail: send}));

是否有可能通过content_script .js文件或任何其他方式将数据发送到注入的js文件?

TL; DR:我正在尝试将数据发送到注入的.js文件。(Chrome extension - retrieving Gmail's original message上显示的数据传输方向相反。)是否可能?如果可能的话,我应该怎么做?

编辑:我将buffer.js更改为

buffer.js

var s = document.createElement('script');
s.src = chrome.extension.getURL('control.js');
s.onload = function(){
    this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);

var send ='plz work';
window.onload = function(){
        document.dispatchEvent(new CustomEvent('Remote2Buffer', {detail: send}));
};

更改代码后,警报开始发生,但有时却没有发生。为什么会这样?

0 个答案:

没有答案