无法绑定 window 方法:"Invalid calling object"

Can't bind a window method : "Invalid calling object"

我正在 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");

谢谢!

当您调用 window.navigator.msSaveOrOpenBlob() 时,上下文(this 引用)是 navigator。但是,当您执行 navigatorMsSave() 时,它不是,它将是您从中调用的函数的范围,或者是全局范围,具体取决于您调用它的位置。

你可以试试

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