gpt4 book ai didi

javascript - 在 HTML 中查找 currentScript

转载 作者:太空狗 更新时间:2023-10-29 15:16:23 25 4
gpt4 key购买 nike

这是一个示例代码:

HTML

<script> alert('This is alert!') </script>

JS

window.alert = function(data)  //alert() over-riding
{
scriptObject = document.currentScript; //gives me <script> object
}

更新:上面的代码现在似乎无法在 Internet Explorer 11.420.10586.0 中运行(它之前可以运行,compatibility removed for IE )。 为什么在 Chrome、Firefox、Safari 和 Microsoft Edge 中可以找到 Script 对象,而在 Internet Explorer 中却找不到?有没有其他方法?


问题:

HTML

<script> ReferenceError.prototype.__defineGetter__('name', function fff() { javascript:alert(1) }),x </script>

JS

window.alert = function(data)  //alert() over-riding
{
scriptObject = ? // I need to get the Script object
}

我尝试了 arguments.callee.caller 来查找 fff(),但无法捕获脚本对象。

对于上述脚本,Alert() 不会在 Chrome 中执行。请改用 Firefox。我无法在任何浏览器中获取脚本对象。

有什么解决办法吗?

最佳答案

在(阻塞)脚本中立即调用覆盖的 alert 的最简单情况下,简单的 document.scripts[document.scripts.length-1] 可能很好去:

<pre id="log"></pre>


<script>
window.alert = function(a){
log.innerText += a + ' ' + document.scripts[document.scripts.length-1].outerHTML + '\n';
}
</script>

<script id="a">alert('first')</script>

<script id="b">alert('second')</script>

<script id="c">alert('third')</script>

关于javascript - 在 HTML 中查找 currentScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35629218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com