兼容性问题也有几种,比如页面样式兼容性、js兼容性。
你说的应该属于js兼容性。
js兼容性最通常的解决办法是:
1、检查js中是否使用了ActiveX控件和插件,和当前的浏览器是否这种控件和插件,如果使用 了就打开浏览器的工具>Internet属性>安全>自定义级别,找到“ActiveX控件和插件”然后把需要的类型的给选择上,在点确定。
2、如果没有使用ActiveX控件和插件,那就检查js代码种是否出现了未定义的变量(在ie种未定义的变量不会报错)。简单的解决办法就是打开浏览器的工具>Internet属性>高级>浏览,找到“禁止脚本调试”沟掉。这样一来,代码一运行,哪里错了,浏览器机会显示错误信息。
3、如果确定了不是以上2种错误。那就悲催了。那可能就是浏览器无法识别你代码中使用的语句,那就需要自己换个方法来代替
关于获取行外样式 currentStyle 和 getComputedStyle 出现的兼容性问题
关于用“索引”获取字符串每一项出现的兼容性问题;
关于DOM中 childNodes 获取子节点出现的兼容性问题;
关于使用 firstChild,lastChild 等,获取第一个/最后一个元素节点时产生的问题;
关于使用 event对象,出现的兼容性问题;
关于为一个元素绑定两个相同事件:attachEvent/attachEventLister 出现的兼容问题;
关于获取滚动条距离而出现的问题
在给标签绑定事件时在回调事件里有一个event参数,可以通过eventtarget获取当前对象,在处理函数里把当前对象当做参数传递过去。如:
//绑定事件$('list')click(function(event){
var ele=eventtarget;
deal(ele);
});
//处理函数
function deal(obj){
}
只是举一个例子,如果有错误,请指出。
1、this 表示这个<input> 元素,等同于documentgetElementById;
2、a)你的理解是正确的,但是不仅只有undifined会被强制转换。
js的弱类型,让他可以申明后赋任何类型的值。
因此除了bool型的false,number类型的0,String类型的空串,还有null在三元运算符或者判断条件时都会被转成false
其他还有一些,可以看一看比较基础的javascript书和《javascript高级程序设计》,可谓一阅扫百惑,比在网上别人一知半解的讲述了解的更彻底。
b)通过上面的解答,应该知道为什么不能用event代替this了吧
c)js对于函数的定义是非常松,即使你在函数定义时未写任何参数,或者你定义的参数有多个,但是你调用时,一个参数也不填,也不会出错的。
js函数内默认有个变量,保存你的入参叫:arguments
他是一个数组,下标从0开始,
所以获取event可以写成
function Test(){var event = windowevent||arguments[0];
}
在ie下,事件对象是在全局的,也就 window下,做为window的一个属性
在其他浏览器,都做为方法的第一个参数传入,所以这样写是为了兼容
要获取这个button的值,可以先获取这个对象,event既然是事件,肯定是某对象触发的
所以有这要一个方法
ie下是eventsrcElement
其他浏览器是eventtarget
所以获取这个对象和获取事件对象的值可以这样写
function Test(){var event = windowevent||arguments[0],
//target 就是这个对象
target = eventsrcElement||eventtarget,
//这个对象的值
targetValue = targetvalue;
}
在移动端,用户每时每刻都在触发移动事件,比如触摸的事件,点击,长按,左右滑动的事件,手指缩放,等等。都是移动事件的对象。在pc端,我们的事件对象是和鼠标和键盘的事件处理监听等等。我们首先是要通过DOM0级和DOM二级来进行绑定事件处理对象。在绑定事件的时候,我们可以在事件的回调函数来进行传参进行事件对象的调用。也可以通过Window对象来调用。这样,可以在pc端兼容问题。var e = ev || event 在移动端,我们的移动事件对象,是通过在事件的回调函数中传参就可以了。这个是标准做法。我们通过事件对象,可以找到,我们需要的事件对象的坐标点。和具体的坐标。还有触发事件的对象,特别是在移动端的事件中,我们更需要事件对象的各种属性 ,来进行相关 *** 作。这个是与pc端不一样的地方。
移动端的事件的绑定方法是通过DOM二级来进行。DOM二级来绑定事件,有很多优势。可以绑定多个同样的事件。不会发生覆盖。其二是,在事件名可以绑定多个不一样的事件。这样,我们的移动端就采用了DOM二级来进行绑定事件。
emlentaddEventListen("事件名",function(ev){
// 具体要 *** 作的内容。
});
移动端的事件常见的是:touchstart touchmove touchend tap hold drag -----
都是通过DOM二级来进行绑定,这些事件。
我们来看看移动端的事件对象。我们可以通过事件对象下的targettouches 来找到我们需要的事件的相关方法和属性。而事件对象的targettouches是个类数组的结构,所以,我们如果是一个手指的触发的事件,我们需要通过数组的形式来进行访问具体的事件属性。写法如下:var touch = etargetTouches[0]; 这样,就可以通过这样的形式来进行拿到具体的属性和我们事件触发的具体的坐标值。
在touch下,有我们的需要的关键属性:
clientX:41343798828125 // 这是我们需要用到的,事件触发的元素的到视口的水平方向的距离。
clientY:28481298828125 //这是事件触发元素到视口的垂直方向的距离。
force:1
identifier:0
pageX:41343798828125
pageY:28481298828125
radiusX:3521875
radiusY:3521875
rotationAngle:0
screenX:424
screenY:237
target:保存的是触发事件元素。事件代理的通过来通过该属性获取的是触发事件对象。
以上就是关于html网页兼容问题全部的内容,包括:html网页兼容问题、js兼容性问题有哪些、js中如何通过单击事件获取当前对象,并传递等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)