0

在我努力寻找一种解决方案来打印只在 WordPress 中工作的页面的一个区域时,我遇到了一个非常好的小脚本,它完美地满足了我的需求……但仅限于 IE 浏览器。出于某种原因,Firefox 不想玩球。

脚本是:

function printURL(sHref) {
    if(document.getElementById && document.all && sHref) {
        if(!self.oPrintElm) {
            var aHeads = document.getElementsByTagName('HEAD');
            if(!aHeads || !aHeads.length)
                return false;
            if(!self.oPrintElm)
                self.oPrintElm = document.createElement('LINK');
            self.oPrintElm.rel = 'alternate';
            self.oPrintElm.media = 'print';
            aHeads[0].appendChild(self.oPrintElm);
        }

        self.oPrintElm.href = sHref;
        self.focus();
        self.print();

        return true;
    }
    else 
        return false;
}

调用者:

<a onclick="printURL(this.href); return false;" href="http://printstuff.com" target="_blank">print</a>

这适用于 IE,但不适用于 FF。我对 JavaScript 了解不多,所以如果您能告诉我是否有任何让 Firefox 头疼的东西,我将不胜感激。

顺便说一句 - 我必须使用 javascript 路由而不是使用打印 CSS 文件,因为我要打印的区域(优惠券)设置在一个表中,该表显然设置在 WordPress 主题的容器和包装器 div 中,这使得它很难将其隔离以进行打印。

我还尝试了 iframe 打印,我在这方面取得了一些进展,但 IE 给我带来了问题(rolleyes)。所以上面的这个脚本对我来说似乎是一个很好的答案,除了当我点击“打印”时 Firefox 什么都不做。非常感谢。

4

1 回答 1

0

document.all在 IE 以外的所有浏览器中测试为 false。因此,您的代码非常明确地仅self.print()在 IE 中运行该行。

于 2011-08-28T02:07:16.980 回答