outerHTML数据不完整

时间:2016-07-15 12:09:15

标签: javascript html element outerhtml

HTML:

setlocal enabledelayedexpansion
for /f "skip=1 tokens=*" %%x in ('wmic process where "name='aa.exe'" get ExecutablePath') do (
  set Build=%%x
  echo !Build:~0,-8!
)

JS:

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

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

对于func1():

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

function func2()
{
    console.log(document.currentScript.parentNode.outerHTML);
}

对于func2():

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

为什么两个输出都有差异,因为<div id="WholeNew"> <script>func2()</script> </div> 的{​​{1}} document.callee.caller.arguments[0].target的{​​{1}}中的元素是相同的func1()?我需要来自document.currentScript.parentNode的{​​{1}}的完整outerHTML。

1 个答案:

答案 0 :(得分:1)

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

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>