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

Object doesn't support property or method 'ExecWB' when trying to call a print preview dialog in IE9

我正在为 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 不为空,有很多属性和方法,比如正确的classid,但是没有ExecWB()方法

事实证明,如果在 IE Tools => Internet Options => Security => [= 中将此选项设置为 "Disabled",代码将不起作用13=]: