首页 > web前端 > js教程 > JS用 或 || 来兼容FireFox!_javascript技巧

JS用 或 || 来兼容FireFox!_javascript技巧

PHP中文网
发布: 2016-05-16 19:24:11
原创
965 人浏览过

JS用 或 || 来兼容FireFox!_javascript技巧

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<li> 
<a href="http://www.blueidea.com/articleimg/bbsimg/smile.gif"/></a> 
<a href="图片地址">打开</a> 
</li> 
<li> 
<a href="http://www.blueidea.com/articleimg/bbsimg/biggrin.gif"/></a> 
<a href="图片地址">打开</a> 
</li> 
<li> 
<a href="http://www.blueidea.com/articleimg/bbsimg/confused.gif"/></a> 
<a href="图片地址">打开</a> 
</li> 
</body> 
</html> 
<script language="javascript" type="text/javascript"> 
document.body.onclick = function(evt){ 
 evt = evt || window.event; 
 var o = evt.target || evt.srcElement; 
 window.open(o.previousSibling.href || o.previousSibling.previousSibling.href); 
 return false; 
} 
</script>
登录后复制

找到 document.body.onclick = function(evt), 
在IE下,这个evt是不会有的,但是在fireFox下(opera下好像也是)会默认传这个参数.在IE下,这个参数是 null ,想兼容,就这样写. 

继续向下, 
evt = evt || window.event; 
在IE下,evt 就会指向:window.event,在fireFox下,就会指向那个默认参数. 
因为在IE下 evt || window.event 相当于: null || window.event,结果还是window.event 
而在fireFox下,就相当于 evt || null ,结果就是evt 

相下看: 
o.previousSibling.href || o.previousSibling.previousSibling.href 
前面一个表达式用于IE下,后面一个用于FireFox下. 
因为在IE下,XMLDom没有preserveWhiteSpace这个属性,即:把空白也当作一个节点,而IE则默认为false,即把空白不看成一个节点. 

这里说到了XMLDom,似乎和上面所说的不相关,但是在FireFox下 previousSibling就是空白,除非两个HTML标签之间没有任何形式的空格. 

 
打开 
两个之间有换行(属于空格的一种),所以在FireFox下,取下面一个的前一个节点的话,就必须用: 
o.previousSibling.previousSibling.href 

可能你还是没有看明白,没关系,在举个简单的: 

 以上就是JS用 或 || 来兼容FireFox!_javascript技巧的内容,更多相关内容请关注PHP中文网(www.php.cn)!


来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板