如何测试是否支持onpropertychange
How to test if onpropertychange is supported or not?
我想知道输入元素是否发生了变化,我了解到我可以在IE中收听onpropertychange
,在其他浏览器中收听oninput
。
下面是我的代码:
var _addChangedProperty = function(input){
input.changed = false;
var oninput = function(){
this.changed = !!this.value;
if(this.changed){
this.style.color = "black";
}
};
input.onpropertychange = input.oninput = oninput;
};
现在我想将input.onpropertychange = input.oninput = oninput;
更改为addEventListerner
和attachEvent
,我需要检查是否支持onpropertychange
事件,我该如何做到这一点(没有浏览器检测)?
您可以使用in
操作符进行检查:
"onpropertychange" in input
这种特性测试在旧版本的Firefox中不起作用,旧版本的Firefox会报告与存在的事件对应的事件处理程序属性的false
事件,但这在这里不是问题,因为Firefox目前不支持propertychange
事件,将来也不太可能支持。
这里有一些背景:http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
另一点:您需要单独的函数来处理propertychange
和input
事件,因为在propertychange
处理程序中,您需要检查是否是value
属性发生了更改。否则,您将最终处理输入的任何属性的更改。
input.onpropertychange = function(evt) {
evt = evt || window.event;
if (evt.propertyName == "value") {
// Do stuff here
}
};
相关文章:
- jQuery检测浏览器是否支持Zoom
- React Native当前是否支持访问用户'的通讯簿
- 如何(功能)检测浏览器是否支持WebM alpha透明度
- Opera Mini是否支持window.confirm()
- 如何检查浏览器中是否支持文本溢出:省略号
- 单个 Redis 客户端连接是否支持并发读写
- 目前是否支持 JqGrid 中的多分组
- 检查浏览器是否支持iFrame上的加载方法
- 检查浏览器是否支持 HTML 验证
- Qt-WebView是否支持包含异步Ajax的网页
- easyUI是否支持设置请求头
- 安卓股票浏览器是否支持WebSocket
- jquery复选框树是否支持“;展开直到节点“;或“;扩展父母”;当程序地调用“;检查”;
- Firefox是否支持enablePrivilege(“UniversalBrowserRead”)
- adal.js是否支持授权代码授予流
- IndexedDB是否支持类似SQL的事务
- IONIC是否支持用Java开发的多线程和调用jar库
- 画布是否支持嵌套的上下文保存
- 如何检测浏览器是否支持js-onscroll.立即
- 具有辅助功能的浏览器是否支持CSS或JavaScript