Javascript:从自调用匿名函数/立即调用函数表达式(IIFE)中调用全局函数
我正在尝试创建一个chrome扩展。我的内容脚本中有以下功能来处理文件下载:Javascript:从自调用匿名函数/立即调用函数表达式(IIFE)中调用全局函数,javascript,jquery,Javascript,Jquery,我正在尝试创建一个chrome扩展。我的内容脚本中有以下功能来处理文件下载: function handleDownloadFile(urlVal){ console.log("handleDownloadFile called"); } 然后,我有以下代码将函数注入DOM(取自此处:): 调用foo(“http://url.com/doc.pdf“,它将中断,说明handleDownloadFile未定义。如您所见,我甚至尝试传递window,然后将window.handleDown
function handleDownloadFile(urlVal){
console.log("handleDownloadFile called");
}
然后,我有以下代码将函数注入DOM(取自此处:):
调用foo(“http://url.com/doc.pdf“
,它将中断,说明handleDownloadFile未定义。如您所见,我甚至尝试传递window
,然后将window.handleDownloadFile(url)
设置为单击事件处理程序,但没有成功
如果可能的话,我希望有人能给我一些建议。在声明handleDownloadFile时,你能试试这个吗-
window.handleDownloadFile = function(urlVal){
console.log("handleDownloadFile called");
}
jQuery
是否在扩展中定义?您好,谢谢您的评论。是的,它是有定义的,而且是有效的。如果我将handleDownloadFile()
移动到匿名函数中(例如foo()
之后),它将工作。但因为我计划使用ChromeAPI(例如chrome.extension.getBackgroundPage()
),所以它必须在外部。希望它是明确的,如果不是我很乐意提供更多的细节<调用foo
时,将立即调用code>handleDownloadFile(url)。handleDownloadFile
的返回值将分配给单击处理程序。如果您希望在单击时调用handleDownloadFile
,则必须将其包装在函数$(“#downloadPdfButton”)。单击(函数(){handleDownloadFile(url)})代码>非常感谢Austin,我会立即尝试并让您知道。我刚刚尝试了这个,还有window.handleDownloadFile(url)
。不幸的是,两者都不起作用。非常感谢你的帮助和时间。
window.handleDownloadFile = function(urlVal){
console.log("handleDownloadFile called");
}