这是一个xss代码:
<img src=x onerror="javascript:window.onerror=alert;throw 1">
我无法理解alert
的用法。为什么我们在alert
之后不需要括号?我无法理解浏览器的行为。浏览器会弹出一个框并显示Uncaught 1
。看起来浏览器首先弹出一个警告框,然后将异常字符串填入框中。但是,我不太确定这是怎么发生的。顺便说一句,我用chrome测试了这个。
答案 0 :(得分:4)
window.onerror
本身就是一个功能。您可以将其称为功能名称或更好,功能参考。 alert也是函数的名称,可以称为函数引用。
因此,他们将onerror
映射到alert
,即onerror
事件发生时,会有警报。
window.onerror
是一个事件处理程序,alert
可以警告发送到参数中的任何内容,现在onerror
事件处理程序将事件信息发送到alert
是的,当发生错误时,你会得到错误。
有关window.onerror
的参数和工作的更多信息。他们的语法是:
window.onerror = funcRef;
funcRef
被称为alert()
。