destoon 打印 web 页面代码解析
公司官网改版之前,行情和资讯详情中的一些 js 方法都是可以使用的,改版之后发现按钮点击无效。检查了方法所在文件有引入,方法本身也有被调用(console.log 测试)。分析具体的代码发现,按钮点击没有生效,是因为方法本身还关联了 DOM 元素。比如某些功能涉及到提交表单,而表单内容是动态添加到 DOM 文档中的,这时如果之前的 ID 元素不存在了,方法自然就不生效了。
详情页面的打印功能也是如此。
var isIE = (document.all && window.ActiveXObject && !window.opera) ? true : false;
function Print(i) {
if(isIE) {
window.print();
} else {
var i = i ? i : 'content';
var w = window.open('','','');
w.opener = null;
w.document.write('<div style="width:630px;">'+Dd(i).innerHTML+'</div>');
w.window.print();
}
}
主要看非 IE 的逻辑分支。方法传入参数作为更改后的元素 ID,默认 ID 为 content
。打开一个新的窗口,写入想要打印的内容(元素包含的 html 内容),之后调用 window.print()
方法调起浏览器的打印。设置宽度 630px
猜测是 A4 纸的打印标准。
因为没有设置 content ID 元素(DOM 结构改版之后被破坏),所以结果就是打开一个空白窗口,然后就没有然后了。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。