尝试在 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=]:
我正在为 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=]: