深入浏览器兼容
2017-12-06 本文已影响0人
我_巨可爱
jQuery 使用 Hook 进行兼容,一般形式如下
var valHooks = {
// 不同于 Object.defineProperty 中 set 和 get有默认参数,这里的 get 和 set 是自己传参
get: function () {},
set: function () {}
}
使用形式
// 某种条件下,需要使用 Hook
var hook = valHooks
// 判断 Hook 中有 set 或者 get 吗?因为,并不是所有的 Hook 有 set 和 get
// 那么兼容问题就在 hook 中被解决了
if (hook && "set" in hook) { hook.set(ele,name,value) }
jquery 中涉及兼容的几种方法
研究的是 2.0 以上的版本,没有很多处理 ie8-9 兼容的代码。这里以 val 为例,它一般用于表单元素,在没有 value 的情况下会获得文本
valHook
- 有 valHook 的几种元素,比如
select
,option
,radio
,checkbox