我正在尝试制作一个控制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}));
};
更改代码后,警报开始发生,但有时却没有发生。为什么会这样?