我正在尝试从我的内容脚本触发文件上传对话框。
当我直接在页面控制台中键入以下内容时,它会工作并显示输入对话框。
document.getElementById("upload").click();
但是如果我在我的content.js脚本中做同样的事情,它就不会。
我还尝试在页面中注入一个脚本然后触发它;
injectScript('events.js');
function injectScript(filename) {
var script = document.createElement('script');
// TODO: add "script.js" to web_accessible_resources in manifest.json
script.src = chrome.extension.getURL(filename);
script.onload = function() {
this.remove();
};
(document.head || document.documentElement).appendChild(script);
}
//in document ready
var event = document.createEvent('customEvent');
event.initCustomEvent('triggerUpload', true, true, {});
document.dispatchEvent(event);
然后在events.js中:
document.addEventListener('triggerUpload', function (e) {
console.log("inside"); //yes, my event triggered successfully
var el = document.getElementById("upload");
el.click();
//other things tried..
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", false, true);
el.dispatchEvent(evt);
var event = new Event('click');
el.dispatchEvent(event);
});
然而,没有任何作用。
这不可能吗?