当前位置: 代码迷 >> JavaScript >> 无法在 Chrome 中读取 null 的属性“body”,但可以在 Firefox 中工作
  详细解决方案

无法在 Chrome 中读取 null 的属性“body”,但可以在 Firefox 中工作

热度:29   发布时间:2023-06-06 09:38:11.0

我正在尝试使用 JavaScript 从<object>标签中获取数据。 但是在阅读时,我在 Chrome 中收到以下错误:

无法读取 null 的属性“body”

但是相同的代码在 Firefox 中运行良好。 下面是我的代码:

<body onload="init()">
    <object id="data" data="graph.json" type="text/plain" style="display:none"></object>
</body>
<script>
var init = function(){
    var json = document.getElementById("data").contentDocument.body.childNodes[0].innerHTML;
    var graph = JSON.parse(json);
}
</script>

所以document.getElementById("data").contentDocument.body.childNodes[0].innerHTML给出了错误。

您可以简单地使用innerHTML

document.getElementById("data").innerHTML

<object />元素将在您定义源时保存 html - 浏览器将在其中呈现 html。 因此,innerHTML 可以正常工作,您无需担心 contentDocument 和/或 contentWindow。 如果您使用iframe则需要这个。

取而代之的.contentDocument ,你可以使用.contentWindow.document ,这似乎是工作在Chrome。

另外,我不会使用.childNodes[0].innerHTML ,而是.textContent ,因为 HTML 可能包含 HTML 实体(例如&gt;当您的 JSON 有<某处时),而textContent只会提供纯文本。

所以:

document.getElementById("data").contentWindow.document.body.textContent
  相关解决方案