解决IE浏览器的only one scriptx object can be used per browser window问题

浏览器IE  

问题:浏览器报only one scriptx object can be used per browser window错误

一般的ScriptX控件的引入需要在当前文件中这样写:

<object id="factory" style="display: none" viewastext="" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" codebase="../../smsx.cab#Version=6,5,439,30">
</object>
但当你在一个窗口内连续打开两个要打印的文档时,只能有一个打印文件能正常打印,另一个是打印不了也预览不了的,报only one scriptx object can be used per browser window的错误,原因是每个浏览器窗口只能有一个ScriptX对象,而你在该浏览器窗口下打开了2个以上的打印文件,每个 打印文件中都引入了打印对象,所以会报错,要想解决这个问题,首先就得考虑决不能让每个打印文件都引入ScriptX对象,所以我没有将上面那段代码写到当前文件,而是引入一个外部js文件,这个文件中包含创建ScriptX对象及打印格式内容,如打印按钮对应的方法这样写(原理:打印前引入ScriptX对象,打印后清除掉)
function Print() {
try{
	//先在原文档中动态创建一个div
	if(!document.getElementById("inScriptX")){
		var scriptX=document.createElement("div");
		 scriptX.id="inScriptX";
		 document.body.appendChild(scriptX);
	}
	//引入控件的代码动态写到刚创建的div内
	document.getElementById("inScriptX").innerHTML="<object id='factory' style='display:none' viewastext classid='clsid:1663ed61-23eb-11d2-b92f-008048fdd814' codebase='../../smsx.cab#Version=6,5,439,30'></object>";
	 if (!factory.object) {
		 alert("打印控件没有正确安装!");
		 return false;
 	 }
	 //控制打印样式
	 set_print();
         //直接打印
	 factory.printing.Print(false);
         //打印完之后清空刚创建的div的内容,这样下次再打开另一个文件的时候就不会
	 document.getElementById("inScriptX").innerHTML="";
	}catch(e){
		alert(e.message)
	}
}
 function set_print(){
         factory.printing.header   =   ""   	
	 factory.printing.footer ="";
	 factory.printing.leftMargin = 6;//左边距
	 factory.printing.topMargin = 0;//上边距
	 factory.printing.rightMargin =6;//右边距
	 factory.printing.bottomMargin = 10;//下边距 
}



这样就可以在一个浏览器窗口内开启多个打印文件并都能正常的打印了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值