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。
答案 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>