javascript - 尝试在 IE9 中调用打印预览对话框时,对象不支持属性或方法 'ExecWB'

标签 javascript internet-explorer internet-explorer-9 ole print-preview

我正在为 IE9 编写一个 Web 应用程序,我需要打开“打印预览”对话框(不是 window.print(),而是可以设置边距等的对话框)

我在这个问题中找到了这段代码 - Open another page or image in print Preview :

function PrintPreview()
{
  var OLECMDID =  7;

  /* OLECMDID values:
  * 6 - print
  * 7 - print preview
  * 0 - open window
  * 4 - Save As
  */

  var PROMPT = 1; // 1 PROMPT USER 2 DON'T PROMPT USER
  var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';


  window.document.body.insertAdjacentHTML('beforeEnd', WebBrowser);

  WebBrowser1.ExecWB(OLECMDID, PROMPT);
  WebBrowser1.outerHTML = "";

} 

但是,这一行失败了:

WebBrowser1.ExecWB(OLECMDID, PROMPT);

IE9和IE11中的错误消息都是这样的:

"Object doesn't support property or method 'ExecWB'"

更新:更多测试表明,该代码可以在某些 IE9/IE11 浏览器(例如在我的计算机上)中运行,但不能在 Azure VM 内的浏览器和我的客户配置上运行。

WebBrowser1 不为 null,并且具有许多属性和方法,例如正确的 classid,但没有 ExecWB() 方法。

最佳答案

事实证明,如果在 IE 中将此选项设置为“禁用”,则代码将不起作用 Tools => Internet Options => Security => Security Settings :

Allow Scriptlets option in IE

关于javascript - 尝试在 IE9 中调用打印预览对话框时,对象不支持属性或方法 'ExecWB',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43860804/

相关文章:

javascript - VBA 循环浏览 JavaScript 生成的表中的复选框

node.js - 如何使用node js杀死进程

javascript - IE 9 中的停止事件(无需升级到 Prototype 1.7)

css - IE9 fieldset圆 Angular

javascript - pop() 方法 javascript 未给出完整输出

javascript - 如何跟踪在网站上花费的时间

javascript - IE9 : Object doesn't support the property "is"

php - iframe 中的parent.location.reload 不工作 IE

javascript - 过滤拒绝的 promise

javascript - 单击浏览器中的最大化或最小化按钮时启用调整图标大小