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

时间:2017-05-09 03:54:45

标签: 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中的错误消息是:

  

&#34;对象不支持属性或方法&#39; ExecWB&#39;&#34;

更新:更多测试显示该代码适用于某些IE9 / IE11浏览器(例如我的机器上),但不能在Azure VM内部的浏览器和客户的配置上工作。

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

1 个答案:

答案 0 :(得分:1)

如果此选项设置为&#34;已禁用&#34;则说明代码不起作用。在IE Tools =&gt;中Internet Options =&gt; Security =&gt; Security Settings

Allow Scriptlets option in IE