У меня есть этот метод, который работает отлично, за исключением Firefox:Javascript, Firefox заменить весь документ без document.write
function write(template) {
document.open("text/html", "replace");
document.write(template);
document.close();
}
write("<!DOCTYPE html><head><title>MyPage</title></head><body>111</body><html>");
В светлячок всей странице больше не может обновляться и при обновлении хэша в поле адреса создает полное обновление страницы.
Это не происходит в хроме.
Есть ли другой способ обновить весь документ, который заставляет Firefox играть вместе?
Спасибо!
----------- ---------- РЕДАКТИРОВАТЬ
я заметил, есть document.childNodes [0] .remove() метод для вызова которого удаляется старый документ, но я не могу добавить новый узел документа в этот массив.
var node = document.createElement("html");
node.innerHTML = "<body>1111</body>";
document.childNodes[0].remove();
document.childNodes[0] = node;
Кажется, что не работает. Любые намеки?
----------- EDIT 2 ----------
function write(template) {
var node = document.createElement("html");
node.innerHTML = template;
var head = node.getElementsByTagName("head")[0];
var body = node.getElementsByTagName("body")[0];
if (head) {
document.documentElement.replaceChild(
head,
document.documentElement.getElementsByTagName("head")[0]
);
}
if (body) {
document.documentElement.replaceChild(
body,
document.documentElement.getElementsByTagName("body")[0]
);
}
}
Это успешно делает замену РОМ, к сожалению, в отличие написать Безразлично» т переоценивать теги стилей или скриптов, что делает его бесполезным :(
------- РЕДАКТИРОВАНИЕ 3 -------
Вырабатывает же, как EDIT 2, что делает его тоже бесполезно:
function write(template) {
var node = document.createElement("html");
node.innerHTML = template;
document.replaceChild(node, document.childNodes[0]);
}
----- EDIT 4 -----
Смотрите мой ответ ниже
'document.open()' не имеет параметров: http://www.w3.org/TR/DOM-Level-2-HTML/html.html # ID-72161170 – Raptor
Что еще более важно, сам браузер, похоже, не поддерживает параметры: https://developer.mozilla.org/en-US/docs/Web/API/document.open – Zhihao
Он ведет себя по-разному, фактически, без второго параметра. Если замены нет, после записи вы сможете вернуться в историю с помощью кнопки «Назад» в браузере. Если да, то вы не можете. – momomo