HTML 事件属性

窗口事件属性(Window Event Attributes)

由窗口触发该事件 (适用于 <body> 标签):

 

属性描述
onafterprintNewscript在打印文档之后运行脚本
onbeforeprintNewscript在文档打印之前运行脚本
onbeforeonloadNewscript在文档加载之前运行脚本
onblurscript当窗口失去焦点时运行脚本
onerrorNewscript当错误发生时运行脚本
onfocusscript当窗口获得焦点时运行脚本
onhaschangeNewscript当文档改变时运行脚本
onloadscript当文档加载时运行脚本
onmessageNewscript当触发消息时运行脚本
onofflineNewscript当文档离线时运行脚本
ononlineNewscript当文档上线时运行脚本
onpagehideNewscript当窗口隐藏时运行脚本
onpageshowNewscript当窗口可见时运行脚本
onpopstateNewscript当窗口历史记录改变时运行脚本
onredoNewscript当文档执行再执行操作(redo)时运行脚本
onresizeNewscript当调整窗口大小时运行脚本
onstorageNewscript当 Web Storage 区域更新时(存储空间中的数据发生变化时)运行脚本
onundoNewscript当文档执行撤销时运行脚本
onunloadNewscript当用户离开文档时运行脚本

 

 

 

表单事件(Form Events)

表单事件在HTML表单中触发 (适用于所有 HTML 元素, 但该HTML元素需在form表单内):

属性描述
onblurscript当元素失去焦点时运行脚本
onchangescript当元素改变时运行脚本
oncontextmenuNewscript当触发上下文菜单时运行脚本
onfocusscript当元素获得焦点时运行脚本
onformchangeNewscript当表单改变时运行脚本
onforminputNewscript当表单获得用户输入时运行脚本
oninputNewscript当元素获得用户输入时运行脚本
oninvalidNewscript当元素无效时运行脚本
onresetscript当表单重置时运行脚本。HTML 5 不支持。
onselectscript当选取元素时运行脚本
onsubmitscript当提交表单时运行脚本

 

 

 

键盘事件(Keyboard Events)

属性描述
onkeydownscript当按下按键时运行脚本
onkeypressscript当按下并松开按键时运行脚本
onkeyupscript当松开按键时运行脚本

 

 

 

鼠标事件(Mouse Events)

通过鼠标触发事件, 类似用户的行为:

属性描述
onclickscript当单击鼠标时运行脚本
ondblclickscript当双击鼠标时运行脚本
ondragNewscript当拖动元素时运行脚本
ondragendNewscript当拖动操作结束时运行脚本
ondragenterNewscript当元素被拖动至有效的拖放目标时运行脚本
ondragleaveNewscript当元素离开有效拖放目标时运行脚本
ondragoverNewscript当元素被拖动至有效拖放目标上方时运行脚本
ondragstartNewscript当拖动操作开始时运行脚本
ondropNewscript当被拖动元素正在被拖放时运行脚本
onmousedownscript当按下鼠标按钮时运行脚本
onmousemovescript当鼠标指针移动时运行脚本
onmouseoutscript当鼠标指针移出元素时运行脚本
onmouseoverscript当鼠标指针移至元素之上时运行脚本
onmouseupscript当松开鼠标按钮时运行脚本
onmousewheelNewscript当转动鼠标滚轮时运行脚本
onscrollNewscript当滚动元素的滚动条时运行脚本

 

多媒体事件(Media Events)

通过视频(videos),图像(images)或者音频(audio) 触发该事件,多应用于HTML媒体元素比如 <audio>, <embed>, <img>, <object>, 和<video>):

属性描述
onabortscript当发生中止事件时运行脚本
oncanplayNewscript当媒介能够开始播放但可能因缓冲而需要停止时运行脚本
oncanplaythroughNewscript当媒介能够无需因缓冲而停止即可播放至结尾时运行脚本
ondurationchangeNewscript当媒介长度改变时运行脚本
onemptiedNewscript当媒介资源元素突然为空时(网络错误、加载错误等)运行脚本
onendedNewscript当媒介已抵达结尾时运行脚本
onerrorNewscript当在元素加载期间发生错误时运行脚本
onloadeddataNewscript当加载媒介数据时运行脚本
onloadedmetadataNewscript当媒介元素的持续时间以及其他媒介数据已加载时运行脚本
onloadstartNewscript当浏览器开始加载媒介数据时运行脚本
onpauseNewscript当媒介数据暂停时运行脚本
onplayNewscript当媒介数据将要开始播放时运行脚本
onplayingNewscript当媒介数据已开始播放时运行脚本
onprogressNewscript当浏览器正在取媒介数据时运行脚本
onratechangeNewscript当媒介数据的播放速率改变时运行脚本
onreadystatechangeNewscript当就绪状态(ready-state)改变时运行脚本
onseekedNewscript当媒介元素的定位属性 [1] 不再为真且定位已结束时运行脚本
onseekingNewscript当媒介元素的定位属性为真且定位已开始时运行脚本
onstalledNewscript当取回媒介数据过程中(延迟)存在错误时运行脚本
onsuspendNewscript当浏览器已在取媒介数据但在取回整个媒介文件之前停止时运行脚本
ontimeupdateNewscript当媒介改变其播放位置时运行脚本
onvolumechangeNewscript当媒介改变音量亦或当音量被设置为静音时运行脚本
onwaitingNewscript当媒介已停止播放但打算继续播放时运行脚本

 

其他事件

属性描述
onshowNewscript当 <menu> 元素在上下文显示时触发
ontoggleNewscript当用户打开或关闭 <details> 元素时触发

 

参考:

https://www.yuque.com/docs/share/9b8a3997-d819-4284-ad17-8f80a4fc70a4

在Web开发中,为了防止跨站脚本攻击(XSS)等安全问题,通常需要对用户提交的文本数据进行清理,确保其只包含安全的HTML内容。限定HTML标签在一个白名单之内,意味着只允许页面上使用特定的、被认为是安全的HTML标签。同时,过滤掉所有HTML事件属性(比如onclick, onerror等)是为了防止恶意用户通过这些属性执行JavaScript代码,进而对网站或应用程序实施攻击。 实现这一功能通常可以采取以下步骤: 1. 定义一个允许的标签白名单,例如只允许<p>, <b>, <i>, <strong>, <em>, <ul>, <ol>, <li>, <a>等标签。 2. 使用DOM解析器或正则表达式来解析用户输入的HTML内容,并验证标签是否在白名单中。 3. 移除或转义不在白名单中的标签,确保它们不会出现在最终的HTML输出中。 4. 对于所有HTML标签的属性,检查是否属于事件属性(如onclick, onerror, onsubmit等),如果是,则将其移除或对属性值进行转义。 5. 输出经过清理的HTML内容,确保它不会引起安全风险。 下面是一个简单的例子,使用伪代码展示如何过滤HTML标签的事件属性: ```python def filter_html_event_attributes(html_content): allowed_tags = ['p', 'b', 'i', 'strong', 'em', 'ul', 'ol', 'li', 'a'] # 定义白名单 for event_attribute in ['onclick', 'onerror', 'onsubmit', 'onload', 'onmouseover']: # 定义事件属性黑名单 html_content = remove_event_attributes(html_content, event_attribute) return html_content def remove_event_attributes(html_content, attribute_name): # 这里应该是具体的代码逻辑,用于移除或转义HTML中的特定属性 # ... return cleaned_html_content # 示例使用 original_html = '<p onclick="alert(\'XSS!\')">这段文本包含了一个不安全的事件属性。</p>' safe_html = filter_html_event_attributes(original_html) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值