我正在尝试创建Chrome扩展程序。我的内容脚本中有以下功能来处理文件下载:
function handleDownloadFile(urlVal){
console.log("handleDownloadFile called");
}
然后我有以下代码将一个函数注入到DOM中(取自这里:https://stackoverflow.com/a/11811558/3778854):
function injectScript(source) {
var elem = document.createElement("script"); //Create a new script element
elem.type = "text/javascript"; //It's javascript
elem.innerHTML = source; //Assign the source
document.documentElement.appendChild(elem); //Inject it into the DOM
}
injectScript("("+(function(window) {
// functions here
console.log("successfully injected content script"); // works
function foo(url){
$("#downloadPdfButton").click(handleDownloadFile(url));
}
foo("http://url.com/doc.pdf"); // breaks here
}).toString()+")(window)");
在调用foo("http://url.com/doc.pdf")
时,会断言handleDownloadFile是未定义的。如您所见,我甚至尝试传递window
,然后将window.handleDownloadFile(url)
设置为点击事件处理程序,但没有成功。
我希望有人可以给我一些指示,如果可能的话。
答案 0 :(得分:-1)
在声明handleDownloadFile时可以试试这个 -
window.handleDownloadFile = function(urlVal){
console.log("handleDownloadFile called");
}