通过JavaScript打印网页的子集

通过JavaScript打印网页的子集,javascript,printing,Javascript,Printing,是否可以通过JS只打印DOM的一部分 如果唯一的方法是指定打印样式表,我假定打印样式表可以在浏览器打印功能调用之前立即动态应用?试一试: self.printDomElement = function(selector) { var newWindow = window.open("", "Test", "width=500,height=500,scrollbars=1,resizable=1"); var sectionOfDom = $(selector); new

是否可以通过JS只打印DOM的一部分

如果唯一的方法是指定打印样式表,我假定打印样式表可以在浏览器打印功能调用之前立即动态应用?

试一试:

self.printDomElement = function(selector) {
    var newWindow = window.open("", "Test", "width=500,height=500,scrollbars=1,resizable=1");
    var sectionOfDom = $(selector);
    newWindow.document.open();
    for (var i = 0; i < sectionOfDom.length; i++) {
        newWindow.document.write(sectionOfDom[i].innerHTML);
    }
    newWindow.document.close();
    newWindow.print();
    newWindow.close();
};

不,你不能及时加载。最好的办法是一直加载它。但是样式表必须是动态的,除非我对数据属性和属性选择器做了一些巧妙的操作。这将有助于了解你的最终游戏是什么。我想弹出窗口拦截器可能会导致这方面的问题。iframe也可以工作吗?
self.printDomElement = function(selector) {
        var newWindow = window.open("", "Test", "width=500,height=500,scrollbars=1,resizable=1");
        var sectionOfDom = $(selector);
        newWindow.document.open();
        for (var i = 0; i < sectionOfDom.length; i++) {
            if ($(sectionOfDom[i]).is('iframe')) {
                try {
                    newWindow.document.write(sectionOfDom[i].contentDocument.body.innerHTML);
                } catch(err) {
                    console.log('Caught exception with message: [' + err.message + '] while trying to write content to print window.');
                }
            } else {
                newWindow.document.write(sectionOfDom[i].innerHTML);
            }
        }
        newWindow.document.close();
        newWindow.print();
        newWindow.close();
    };