HTML:outerHTML данных не является полным
<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
из func1()
document.currentScript.parentNode
из func2()
такой же <div>
? Мне нужно полное externalHTML <div>
от func2()
.
Какой браузер вы используете? Я не могу воспроизвести проблему в IE11 или Chrome51 из-за ошибок. Может иметь какое-то отношение к тому, что призыв устарел. Не быть педантичным, но в чем проблема, которую вы пытаетесь решить с помощью этого кода, поскольку это не похоже на лучший дизайн imho. – Shilly
Я могу успешно запустить код в Chrome 51 и Firefox 47. IE не будет работать из-за использования 'target'. Используйте 'srcElement'. Какая у вас ошибка? Я просто экспериментирую с этим конкретным поведением кода. –
В зависимости от того, где я помещаю определения функций, я получаю, что либо вызывающий, либо вызываемый не определены. В каком месте вы остановили скрипт, содержащий функции? Вы пробовали это с фактическим URL-адресом изображения? Может быть, src «x» возится с вещами. – Shilly