公司官网改版之前,行情和资讯详情中的一些 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 结构改版之后被破坏),所以结果就是打开一个空白窗口,然后就没有然后了。