javascript面试点

1、判断类型;typeof() instanceof() constructor . http://www.cnblogs.com/flyjs/archive/2012/02/20/2360504.html

2、js代码实现查找关键字高亮显示:split() . http://blog.csdn.net/acess520/article/details/51156356‘

3、不兼容之DOM事件
addEventListener - attachevent

4、事件冒泡、事件捕获阻止:
event.stopPropagation( );                // 阻止事件的进一步传播,包括(冒泡,捕获),无参数
event.cancelBubble = true;             // true 为阻止冒泡 IE 

ie:window.event.srcElement
标准下:event.target

 
5、事件委托:利用事件冒泡的特性,将里层的事件委托给外层事件,根据event对象的属性进行事件委托,改善性能。
使用事件委托能够避免对特定的每个节点添加事件监听器;事件监听器是被添加到它们的父元素上。事件监听器会分析从子元素冒泡上来的事件,找到是哪个子元素的事件。
 
6、js浏览器兼容问题总结及解决办法

a.鼠标指针的位置
IE: event.x 与 event.y || FF: event.pageX 与 event.pageY

b. body 对象
FF的 body 在 body 标签没有被浏览器完全读入之前就存在,而IE则必须在 body 完全被读入之后才存在
这会产生在IE下,文档没有载入完时,在body上appendChild会出现空白页面的问题
解决方法:一切在body上插入节点的动作,全部在onload后进行

c.const问题
FF:可以使用const关键字或var关键字来定义常量
IE:只能使用var关键字来定义常量.
解决方法:统一使用var关键字来定义常量

d.parentElement
IE:obj.parentElement
firefox:obj.parentNode
解决方法:   因为firefox与IE都支持DOM,因此使用obj.parentNode是不错选择

e.addEventListener
Internet Explorer 8 及更早IE版本不支持 addEventListener() 方法,,Opera 7.0 及 Opera 更早版本也不支持。 但是,对于这些不支持该函数的浏览器,你可以使用 attachEvent() 方法来添加事件句柄

var x = document.getElementById("myBtn");
if (x.addEventListener) {                    //所有主流浏览器,除了 IE 8 及更早 IE版本
    x.addEventListener("click", myFunction);
} else if (x.attachEvent) {                  // IE 8 及更早 IE 版本
    x.attachEvent("onclick", myFunction);
}

f.target,srcelement

IE下,event对象有srcElement属性,但是没有target属性;
Firefox下,event对象有target属性,但是没有srcElement属性.但他们的作用是相当的
var target    = ev.target || ev.srcElement; 

 

posted @ 2018-03-26 11:05  前端渣小白  Views(166)  Comments(0)    收藏  举报