我正在为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()
方法。