Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript outerHTML数据不完整_Javascript_Html_Element_Outerhtml - Fatal编程技术网

Javascript outerHTML数据不完整

Javascript outerHTML数据不完整,javascript,html,element,outerhtml,Javascript,Html,Element,Outerhtml,HTML: <div id="WholeNew"> <script>func2()</script> <img src="x" onerror=func1() /> </div> function func1() { console.log(arguments.callee.caller.arguments[0].target.parentNode.outerHTML); } function func2()

HTML:

<div id="WholeNew">
    <script>func2()</script>
    <img src="x" onerror=func1() />
</div>
function func1()
{
    console.log(arguments.callee.caller.arguments[0].target.parentNode.outerHTML);
}

function func2()
{
    console.log(document.currentScript.parentNode.outerHTML);
}
现在查看console中的输出:

对于func1():


func2()
对于func2():


func2()

为什么两种输出都有差异,因为
document.callee.caller.arguments[0]中的元素
func1()
document.currentScript.parentNode
中的
func2()
是相同的
?我需要从
func2()

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

function func2()
{
    currentScriptReference = document.currentScript;
    document.addEventListener('DOMContentLoaded', function(){
      console.log(currentScriptReference.parentNode.outerHTML);
    }, false);
}
工作冲击器:

控制台日志的结果:

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

func2()

您正在使用哪个浏览器?由于错误,我无法在IE11或Chrome51中复制该问题。可能与被调用方不推荐有关。我不想太迂腐,但你想用这段代码解决什么问题,因为这看起来不是最好的设计。我可以在Chrome 51和Firefox 47中成功运行代码。由于使用了
target
,IE无法工作。使用
srcmelement
。你有什么错误?我只是在试验这种特定的代码行为。根据我放置函数定义的位置,我得到的是未定义的调用者或被调用者。您在哪个位置使用包含函数的脚本?你有没有试过用一个真实的图像url?可能是“x”的src搞乱了。我将
document.callee.caller.arguments[0].target.outerHTML
替换为
arguments.callee.caller.arguments[0].target.parentNode.outerHTML
,现在我复制了您遇到的问题。但我找不到有关document.callee的任何文档。不管怎样,看看为什么外层TML不同,现在我看到了这个问题。由于在解析DOM时立即触发func2(),因此DOM仍在加载。当我从place切换script标记和img标记时,两个fn给出相同的结果。(包括img标签)所以我认为img标签在加载时不会出现在DOM中。
function func2()
{
    currentScriptReference = document.currentScript;
    document.addEventListener('DOMContentLoaded', function(){
      console.log(currentScriptReference.parentNode.outerHTML);
    }, false);
}
<div id="WholeNew">
    <script>func2()</script>
    <img src="x">
</div>