外部HTML数据不完整

outerHTML data is not complete

本文关键字:数据 HTML 外部      更新时间:2023-09-26

HTML:

<div id="WholeNew">
    <script>func2()</script>
    <img src="x" onerror=func1() />
</div>

.JS:

function func1()
{
    console.log(arguments.callee.caller.arguments[0].target.parentNode.outerHTML);
}
function func2()
{
    console.log(document.currentScript.parentNode.outerHTML);
}

现在查看控制台中的输出:

对于 func1():

<div id="WholeNew">
    <script>func2()</script>
    <img src="x" onerror=func1() />
</div>

对于 func2():

<div id="WholeNew">
    <script>func2()</script>
</div>

为什么两个输出都有差异,因为func1() document.currentScript.parentNode func2() document.callee.caller.arguments[0].target元素是相同的<div>?我需要来自func2() <div>的完整外部 HTML .

问题是,在请求document.currentScript.parentNode时,文档尚未准备就绪。尝试检索DOMContentLoaded上的outerHTML

function func2()
{
    currentScriptReference = document.currentScript;
    document.addEventListener('DOMContentLoaded', function(){
      console.log(currentScriptReference.parentNode.outerHTML);
    }, false);
}

工作堆积器:https://plnkr.co/edit/koZ1xDlpFacm7r9uY8lC?p=preview

控制台日志的结果:

<div id="WholeNew">
    <script>func2()</script>
    <img src="x">
</div>