创建一个 javascript 文档对象

发布于 2024-07-26 00:38:46 字数 337 浏览 4 评论 0原文

有没有办法通过调用函数来创建或重新创建 javascript 文档对象。 像

<script type="javascript/text">
  var document = createDocument("some html");
</script>

我想这样做,这样我就可以解决这个问题中的问题 client side xslt with javascript in firefox< /a>

Is there any way to create or recreate a javascript document Object by calling a function. Something like

<script type="javascript/text">
  var document = createDocument("some html");
</script>

I want to do this so I can solve the issue in this question client side xslt with javascript in firefox

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

來不及說愛妳 2024-08-02 00:38:46

Webkit 是第一个为该任务包含/公开以下方法的人:

document.implementation.createHTMLDocument(title);

Firefox 从版本 4 开始也实现了此方法,而对于以前的版本,可以使用以下内容创建 HTML 文档:

var doc = document.implementation.createDocument('', '',
  document.implementation.createDocumentType('html', '', ''));

这应该大致相当于具有以下内容的文档 : (HTML5)。

将“createDocumentType”的空字符串替换为所需的 publicId/systemId。

仍然需要在生成的文档中创建/附加 html、head 和 body 元素以获得有效的 DOM。

Webkit was the first to include/expose the following method for that task:

document.implementation.createHTMLDocument(title);

Firefox, from version 4, also implements this method while for previous versions it is possible to create an HTML document using the following:

var doc = document.implementation.createDocument('', '',
  document.implementation.createDocumentType('html', '', ''));

which should be roughly equivalent to a document having <!DOCTYPE html> (HTML5).

Replace the empty strings of 'createDocumentType' with the needed publicId/systemId.

It will be still necessary to create/append html, head and body elements to the resulting document to have a working DOM.

往日 2024-08-02 00:38:46

您可以尝试使用 document.implementation.createDocument 。 获得文档后,您可以使用 innerHTML 属性为其设置 HTML。 如果您希望将其包装在一个整洁的小包中,您可以执行以下操作:

function createDocument(html) {
    var doc = document.implementation.createDocument ('http://www.w3.org/1999/xhtml', 'html',  null);
    doc.documentElement.innerHTML = html;
    return doc;
}

然后您将使用如下功能:

var doc = createDocument("<body><span>Hello StackOverflow.com!</span></body>");

让我知道这是否是您正在寻找的。

You could try using document.implementation.createDocument. Once you have your document, you can use the innerHTML property to set HTML for it. If you want that wrapped in a neat little package you can do something like this:

function createDocument(html) {
    var doc = document.implementation.createDocument ('http://www.w3.org/1999/xhtml', 'html',  null);
    doc.documentElement.innerHTML = html;
    return doc;
}

And then you'd use the function like this:

var doc = createDocument("<body><span>Hello StackOverflow.com!</span></body>");

Let me know if this is what you were looking for.

烙印 2024-08-02 00:38:46

如果 createDocument(...) 给您解析错误,请调整 Dan 的答案以使用 createHTMLDocument() 代替:

function createDocument(html, title) {
  var doc = document.implementation.createHTMLDocument(title)
  doc.documentElement.innerHTML = html
  return doc
}

使用 as:

var doc = createDocument('<!DOCTYPE html><html>'
    + '<head><script src="foo.js"></script></head>'
    + '<body></body></html>', 'test')
console.log(doc.getElementsByTagName('script'))

输出:

[script foo.js]

if createDocument(...) gives you parse errors, adapt Dan's answer to use createHTMLDocument() instead:

function createDocument(html, title) {
  var doc = document.implementation.createHTMLDocument(title)
  doc.documentElement.innerHTML = html
  return doc
}

use as:

var doc = createDocument('<!DOCTYPE html><html>'
    + '<head><script src="foo.js"></script></head>'
    + '<body></body></html>', 'test')
console.log(doc.getElementsByTagName('script'))

output:

[script foo.js]
那小子欠揍 2024-08-02 00:38:46

如果您希望重新创建文档(例如在 iframe 中),您可以使用...

document.open();
document.write('<html><head></head><body>some stuff</body></html>');
document.close();

以下是如何使用它来重新创建动态创建的 iframe 的文档。

var iframe = document.createElement('iframe'),
    iframeDoc = (iframe.contentDocument) 
              ? iframe.contentDocument : iframe.contentWindow.document;

document.getElementById('iframeContainer').appendChild(iframe);

iframeDoc.open();
iframeDoc.write('<html><head></head><body>howdy</body></html>');
iframeDoc.close();

If you're looking to recreate a document (such as in an iframe) you can do so with...

document.open();
document.write('<html><head></head><body>some stuff</body></html>');
document.close();

here is how you could use it to recreate the document of a dynamically created iframe.

var iframe = document.createElement('iframe'),
    iframeDoc = (iframe.contentDocument) 
              ? iframe.contentDocument : iframe.contentWindow.document;

document.getElementById('iframeContainer').appendChild(iframe);

iframeDoc.open();
iframeDoc.write('<html><head></head><body>howdy</body></html>');
iframeDoc.close();
挽清梦 2024-08-02 00:38:46

这在 Firefox 中有效:

document.implementation.createDocument(null, "rootElement", null)

请注意,它为您提供 XMLDocument,而不是 HTMLDocument(如文档本身)。

This works in Firefox:

document.implementation.createDocument(null, "rootElement", null)

Note that it gives you a XMLDocument, rather than a HTMLDocument (like document itself).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文