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>
document.callee.caller.arguments[0].target
offunc1()
document.currentScript.parentNode
の要素func2()
が同じであるため、両方の出力に違いがあるのはなぜ<div>
ですか? <div>
fromの完全な outerHTML が必要func2()
です。