Heim >Web-Frontend >js-Tutorial >JS用 或 || 来兼容FireFox!_javascript技巧

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

PHP中文网
PHP中文网Original
2016-05-16 19:24:11962Durchsuche

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标签之间没有任何形式的空格. 

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

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

<script> 
function test(p1,p2,p3){ 
 p1 = p1 || 100; 
 p2 = p2 || "xlingFairy"; 

 return "p1 = " + p1 + " p2 = " + p2 + " p3 = " + p3; 
}
alert(test()); 
alert(test(null,null,"blueidea.com")) 
</script>

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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn