特殊解决方案
jangogo @ 2008-6-19
本组件已经全面重新构建,最新版本的说明已经转到 章节2.1
我们在此列出用户经常碰到的问题,并提供解决的方案。建议您通读本章节。
1. 如何在页面已载入的时候就调用PAZU控件的方法?
为何页面提示javascript错误说: 函数 __chkpazu() 不存在或者有问题?
解决方案:
这两个问题其实是同一个原因导致的,我们应该知道,当页面载入完成(onload事件)时,PAZU (ActiveX控件)时间上还没有装载完成,如果这个时候你就调用PAZU的方法,那肯定是失败或者出错的。
如下就是一个错误的例子
这样也是错误的:
这两个错误例程都没有考虑到PAZU作为ActiveX是最后载入的,在调用的时候,PAZU根本还没有准备好。
正确的做法是这样的:
把你要调用的PAZU功能的代码写到 __chkpazu() 函数里面,如下:
- function __chkpazu(){
- if(document.readyState=="complete"){
-
- }else{
- setTimeout("__chkpazu()",200);
- }
- }
如果您使用LAPUTAC平台进行开发,则可以利用laputa.js里面的Sheeta对象的onpazuready事件,例子如下:
- Sheeta.onpazuready=function(){
-
- }
2.PAZU 在 IFrame 不能工作吗?
答:是的,你不能把PAZU放到 iframe 里面,在iframe里面PAZU不能执行appWin和页面设置以及打印功能。
我们要求你把PAZU放到 top IE窗口(也就是最外层窗口)的页面里。
3.如何实现网页上的部分显示的内容不打印?
答:要控制网页中的某些内容是否打印是通过CSS实现的,我们碰到有些WEB开发经验不足的开发人员在打印的时候为了使得某些内容不打印而大费周章:要么重新构造页面,要么通过复杂的JS来隐藏不打印的内容。
其实,最好最简单的方法是通过CSS。
在你的样式表里面增加以下内容:
- @media print{
- .noprint_{display:none;}
- }
当你页面上的某个元素(如DIV)不需要打印出来的时候可以这样:
- <div class="noprint_">
- 这个DIV在打印的时候不会出现
- div>
如果该元素本身已经有定义了一个class,怎么办?可以用空格把两个className串联起来:
- <div class="class1 class2 noprint_">
- 这个DIV在打印的时候不会出现
- 而且页面在屏幕上还是会按照你原来的 class1 和 class2定义的样式来显示
- div>
4.页面有多个frame时,如何打印指定的frame或者iframe呢?
答:你可以使用javascript 在调用doPrint前,让需要打印的frame获取焦点就可以了,
例如:
-
- top.focus();
- top.pazu.doPrint("");
-
-
- top.frames[myiframename].focus();
- top.pazu.doPrint("");
|
|