JS用 或 || 来兼容FireFox!

Untitled Document

  • 打开
  • 打开
  • 打开
  • 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;
    }

    [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

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

    <a href="http://www.blueidea.com/articleimg/bbsimg/smile.gif"/></a>
    <a href="图片地址">打开</a>
    两个<a>之间有换行(属于空格的一种),所以在FireFox下,取下面一个<a>的前一个节点的话,就必须用:
    o.previousSibling.previousSibling.href

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

    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"))

    [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

    (0)

    相关推荐

    • js 键盘记录实现(兼容FireFox和IE)

      主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型,即keydown,keypress和keyup,它们分别对应onkeydown.onkeypress和onkeyup这三个事件句柄.一个典型的按键会产生所有这三种事件,依次是keydown,keypress,然后是按键释放时候的keyup. 在这3种事件类型中,keydown和keyup比较底层,而keypress比较

    • JS用 或 || 来兼容FireFox!

      Untitled Document 打开 打开 打开 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; } [Ctrl+A 全选 注:如需引入外部Js需刷新

    • js 颜色选择器(兼容firefox)

      复制代码 代码如下: <!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=&qu

    • JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)

      IE中new Date(strDate)返回无效时间解决方式: 方法一: function getDateForStringDate(strDate){ //切割年月日与时分秒称为数组 var s = strDate.split(" "); var s1 = s[0].split("-"); var s2 = s[1].split(":"); if(s2.length==2){ s2.push("00"); } return

    • js Firefox 加入收藏夹功能代码 兼容Firefox 和 IE

      完整代码如下:chrome下也有提示,说实话一般这类代码一般都是IE下使用,其它浏览器也只是给个提示了. <script type="text/javascript"> //设为首页 www.jb51.net function SetHome(obj,url){ try{ obj.style.behavior='url(#default#homepage)'; obj.setHomePage(url); }catch(e){ if(window.netscape){ try

    • div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox

      div+css+javascript 实现无缝滚动,marquee无缝滚动,无缝滚动,兼容firefox 用marquee实现首尾相连循环滚动效果(仅IE): 复制代码 代码如下: <marquee behavior="scroll" contenteditable="true" onstart="this.firstChild.innerHTML+=this.firstChild.innerHTML;" scrollamount=&quo

    • 兼容Firefox和IE的onpropertychange事件oninput

      在文本框输入数据的时候,当键盘按下并放开的时候可以使用onkeyup来检测事件,onpropertychange能够捕获每次改变,而onchange需要执行某个事件才可以捕获.可是有的时候我们输入数据是采用粘贴的方式而不是键盘输入,这就需要实时检测文本框状态的改变.onpropertychange 不被firefox所支持,如果想在firefox下正常使用,需要用oninput属性,且需要用addEventListener来注册事件. //当状态改变的时候执行的函数 function handl

    • 解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法

      今天检查自己用JQuery+AJAX+PHP做的网站后台登录检测,发现登陆成功后执行页面跳转函数这段JavaScript(JS)代码特效在IE和谷歌浏览器Chrome下都可以很好地执行,兼容性还不错.结果到了火狐(FireFox)浏览器下setTimeout这个JS内置函数不执行了,无效了,也没报错!打开FireBUG指望它能检测出JS的错误,结果没用...Javascript(JS)脚本代码在各浏览器下的兼容是一个很头疼的问题,经过一番调试和搜索,终于解决了setTimeout这个JS代码在火

    • js事件驱动机制 浏览器兼容处理方法

      3.1. 事件是如何产生的 * 第一种情况,用户对网页做了某些操作,比如,点击了一个按钮,产生点击事件. 第二种情况,用户没有对网页做操作,也可能产生事件,比如浏览器已经将整个页面加载完毕,会产生加载完成事件.当事件产生以后,浏览器会查找产生事件的节点有没有绑订相应的事件处理代码.如果有,则调用该代码来处理.如果没有,会继续向上查找父节点,有没有对应的事件处理代码(事件冒泡). 3.2. 绑订事件处理代码 ** 1) 绑订事件处理代码到html标记乊上 比如: <a id="a1"

    • javascript下兼容firefox选取textarea文本的代码

      主要用到的js代码 复制代码 代码如下: function getSelectedText(){         var selectedText;         var textField=document.getElementById('inputTextarea');         if(window.getSelection) selectedText=getTextFieldSelection(textField);//getTextFieldSelection(document.

    随机推荐