我正在做一个铬合金的扩展。我想将一个文件添加到具有
dropzone on it.
例如,可以在开发人员控制台中使用
document.body.dropzone.addfile(file);
我了解到扩展不能访问变量,比如在本例中的dropzone对象。所以我想我可以通过遵循
many examples like this one
我使用自定义事件的地方。我的代码仍然非常相似;
在my content.js中
//!!!!we are in a frame so doc is needed. Not using main document.
var s = doc.createElement('script');
s.src = chrome.extension.getURL('CustomEvent.js');
(doc.head || doc.documentElement).appendChild(s);
s.onload = function () {
s.remove();
};
// Event listener
doc.addEventListener('RW759_connectExtension', function (e) {
// e.detail contains the transferred data (can be anything, ranging
if (!e.detail) {
console.log('addFile - failed to get the e.detail object.');
return // this is where I end up no detail object.
}
e.detail.addFile(upFile);
自定义事件.js
setTimeout(function () {
console.log('in the time out');
let dz = document.body.dropzone;
if (!dz) {
console.log('addFile - failed to get the dropzone object.');
}
/* Example: Send data from the page to your Chrome extension */
document.dispatchEvent(new CustomEvent('RW759_connectExtension', {
detail: dz
}));
}, 10);
事件已调度。
为了检查所有东西是否正确连接,我将detail改为字符串,content.js将字符串设置为ok。
所以问题是我不能传递一个对象。有人知道为什么吗?