我创建了一个新的 DOM 文档var foo=document.implementation.createDocument(null, "html");
我想设置一些属性,包括位置。但是foo.location
返回null
,foo.location.href="https://stackoverflow.com"
返回错误Cannot set property 'href' of null
。如何设置位置?
您必须首先按照@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。