2017-04-12 62 views
1

我试图在IE 11上,但它不起作用。有人能解释我为什么吗?我在其他线程上找不到任何答案。无法绑定窗口方法:“无效的调用对象”

var navigatorMsSave = window.navigator.msSaveOrOpenBlob; 
navigatorMsSave(new Blob([blob], {type: "application/pdf"}), "File.pdf"); 

错误代码:无效调用对象

我所有的变量都还行,因为当我开始下面的代码,一切都很好,我可以下载正确的文件。

window.navigator.msSaveOrOpenBlob(new Blob([blob], {type: "application/pdf"}), "File.pdf"); 

谢谢!

回答

0

当您调用window.navigator.msSaveOrOpenBlob()时,上下文(this参考)为navigator。但是当你做navigatorMsSave()它不是,它会是你调用的函数的范围,或者全局范围取决于你调用的地方。

您可以尝试

var navigatorMsSave = window.navigator.msSaveOrOpenBlob.bind(window.navigator); 
+0

非常感谢您的完整的答案,我现在明白了。绑定是完成这项工作的完美方式:) –