Подтвердить что ты не робот

Как заменить весь HTML node на jQuery

У меня есть строка, которая выглядит так:

<html><head><title>example</title></head><body>some example text</body></html>

Я возвращаю эту строку в результате запроса AJAX.

Я бы хотел, чтобы браузер отображал и отображал эту строку. Идея заключалась бы в том, чтобы сделать что-то вроде:

$('html').parent().html(myString);

Ну, это не работает. Я попытался использовать IFRAME, но я не понял, как заставить это работать.

Примечание: Невозможно изменить эту строку. Для меня также невозможно восстановить эту строку при последующем вызове на сервер (иначе я мог бы просто перенаправить браузер на этот URL-адрес).

4b9b3361

Ответ 1

Методы document.open/write/close будут делать то, что вы хотите:

var newDoc = document.open("text/html", "replace");
newDoc.write(myString);
newDoc.close();

Если вы не передадите параметр replace, вызов document.open добавляет историю страниц. Таким образом, пользователям придется дважды щелкнуть дважды, чтобы перейти на предыдущую страницу.

Ответ 2

Вы можете просто удалить теги html, а затем поместить все внутри элемента html:

$('html').html(myString.replace(/<html>(.*)<\/html>/, "$1"));

Ответ 3

По крайней мере, в firefox (47.0) решение:

var newDoc = document.open("text/html", "replace");
newDoc.write(response);
newDoc.close(); 

не работает так, как было предложено, так как нажатие кнопки "Назад" на Firefox все еще загружает предыдущую запись истории, т.е. вся точка использования "заменить" заключается в том, чтобы не нажимать на кнопку "Назад" только для того, чтобы приветствовать вид страницы до последнего раза вызывается document.write(). Способ сделать это, который не вызывает вышеупомянутый эффект, - это просто вызвать методы непосредственно в объекте документа:

document.open("text/html", "replace");
document.write(response);
document.close();

Использование опции замены не только позволяет заполнять историю пользователей мусором, но также помогает справляться с проблемами, возникающими из-за странных способов, которыми браузеры часто обрабатывают записи истории, созданные javascript, так как иногда позволяет браузеру регистрироваться изменения, внесенные в документ с помощью javascript в истории, могут иметь неожиданные результаты при обработке операций "назад/вперед" (например, добавление "wyciwyg://(somenumber)" к URL-адресу после выполнения document.write() в документе, который его история вернулась к предыдущему состоянию).