【发布时间】:2020-05-26 12:10:34
【问题描述】:
我有一个我私下使用的扩展,有时需要将 svg 文档转换为 html 文档。
如果我检测到页面不包含正文元素并且location.href 包含文本“.svg”(文档是 SVG 文档),我尝试以下操作
document.removeChild(document.firstChild);
var body = document.createElement("body")
var html = document.createElement("html");
html.appendChild(document.createElement("head"));
html.appendChild(body);
document.appendChild(html);
这似乎有效。检查页面显示标准文档
<html>
<head></head>
<body></body>
</html>
但是当我尝试访问 document.body.style 时,我得到一个空引用错误。 document.body 等于 null 很公平,然后我尝试直接设置 document.body 元素
// leading on from first snippet
document.body = body; // line 8712
我收到了Uncaught TypeError: Failed to set the 'body' property on 'Document': The provided value is not of type 'HTMLElement'.
at contentscript.js:8712
我似乎无法从一个空文档创建一个可用的 HTML 文档。 可能吗?
我真的需要这个页面,因为重定向会删除域和关联的会话。
【问题讨论】:
-
您是否需要彻底清除文档以使用新文档,或者您可以为
body创建新内容? -
@ScottMarcus 我需要摆脱 svg 内容。这就是页面以
<svg ...blah blah ... /svg>开头的内容以及它包含的所有内容 -
@aw04 您是从 svg 文档开始的吗?即地址栏有类似“someDomain.com/someImage.svg”
-
不,对不起,你是对的。我得到一个 svg 的错误
-
据我所知,你想要什么是不可能的。
标签: javascript html dom svg google-chrome-extension