Недавно созданное местоположение документа DOM - PullRequest
1 голос
/ 11 июня 2019

Я создал новый документ DOM, используя
var foo=document.implementation.createDocument(null, "html");
и я хочу установить некоторые свойства, в том числе местоположение. Но foo.location возвращает null, а foo.location.href="https://stackoverflow.com" возвращает ошибку Cannot set property 'href' of null. Как я могу установить местоположение?

1 Ответ

2 голосов
/ 11 июня 2019

Сначала необходимо установить контекст просмотра для этого документа, как подсказывает @rlemon.

Самый простой способ предоставить контекст просмотра - поместить новый документ в элемент iframeзаменив документ iframe новым документом.

Этот пример взят из демонстрации MDN о том, как это сделать:

    var frame = document.getElementById("theFrame");
    // note the use of createHTMLDocument
    var doc = document.implementation.createHTMLDocument("New Document");
    var destDocument = frame.contentDocument;
    var srcNode = doc.documentElement;
    var newNode = destDocument.importNode(srcNode, true);
    destDocument.replaceChild(newNode, destDocument.documentElement);
    // Now it is in a browsing context and the location can be set
    destDocument.location.href = "//example.com";

Я заметил, что вы создаете HTMLдокумент.Поэтому я использовал createHTMLDocument, а не createDocument (что создает XMLDocument).

Этот пример не будет работать здесь как фрагмент, потому что iframe заблокирован.Итак, вот jsbin с этим кодом, работающим .

...