Раздел печати скрипта страницы отлично работает в IE, но проблемы в Firefox - PullRequest
0 голосов
/ 28 августа 2011

В своих битвах, чтобы найти решение для печати только одной области страницы, которая работает в 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, ноне фф.Я не очень разбираюсь в JavaScript, поэтому был бы признателен, если бы вы сказали мне, есть ли что-то, что вы видите, вызывающее головную боль в Firefox.

Кстати, мне нужно идти по пути javascript вместо использования файла CSS для печати, поскольку область, которую я хочу напечатать (купон), установлена ​​в таблице, которая, очевидно, установлена ​​в контейнере темы WordPress.и div-обертки, которые затрудняют его изоляцию для печати. ​​

Я также экспериментировал с печатью iframe, с которой я добился определенных успехов, но IE вызывает у меня проблемы (rolleyes).Так что приведенный выше скрипт мне кажется хорошим ответом, за исключением того, что Firefox ничего не делает, когда я нажимаю «печать».Большое спасибо.

1 Ответ

0 голосов
/ 28 августа 2011

document.all тестирует false во всех браузерах, кроме IE.Таким образом, ваш код явно выполняет только строку self.print() только в IE.

...