2011-01-11 2 views
3

Какие существуют опции для открытия фрагмента документа в новой вкладке или окне. Какие файлы со всеми браузерами и более удобны для пользователей?Как открыть документFragment на новой вкладке

var frag = document.createDocumentFragment(); 
var div = $("<div>").addClass("Printable"); 
div[0].innerHTML = doc.body.innerHTML; 
frag.appendChild(div[0]); 
openIt(frag); // How to implement openIt 

Фрагмент содержит переформатированное подмножество страницы, которая готова к печати.

Предпочтительно я хотел бы его открыть, естественно, через какой-то <link> или <a> и посмотреть, как и любой другой удобный HTML ссылку, а затем спокойно открывает раздражающие всплывающие через window.open.

ответ

2

Вы не можете надежно сделать это безwindow.open() и даже тогда вам нужно создайте фрагмент на , которыйdocument, а не текущий (поскольку некоторые браузеры не допускают элементов с перекрестными добавлениями). Это выглядело бы примерно так:

var win = window.open("","myWindow","...options..."); 
var frag = win.document.createDocumentFragment(); 
var div = win.document.createElement("div"); 
div.className = "Printable"; 
div.innerHTML = doc.body.innerHTML; 
frag.appendChild(div); 

You can test out a demo here.

+0

, даже если это работает, большинство (если не все?) Браузеров могут настроить, будет ли 'window.open()' открывать новую вкладку или всплывающее окно. – jAndy

+0

@ jAndy - Я согласен, но вы говорите о манипуляциях с несколькими документами, у вас есть только ограниченное количество опций здесь ... –

+0

Я действительно надеялся избежать использования 'window.open' – Raynos

1

Попробуйте это. window.open('data:text/html;charset=utf-8,text%20to%20show');

отредактирован:

Это был основной ... Это должно удовлетворить ваши потребности:

var text = "<div class='Printable'>" + $("body").html() + "</div>"; 
window.open('data:text/html;charset=utf-8,'+text); 
+0

Это абсолютно не относится к фрагменту документа. – Raynos

+0

Я думаю, что он имел в виду текст фрагмента документа как параметр «текст для отображения». – rahul

+0

@rahul Я уверен, что текст для отображения - это строка. и преобразование содержимого документаFragment в строку разрушает его форматирование. – Raynos

Смежные вопросы