站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Javascript 专题[JS]用空格或 || 来兼容FireFox

[JS]用空格或 || 来兼容FireFox

摘要: [JS]用空格或 || 来兼容FireFox
<tr> <td>

看例子:

运行代码框

<textarea class=fm id=code1 style="WIDTH: 519px; HEIGHT: 174px" rows=12 cols=82> html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <head> Untitled Document </head> <body>

  • 打开
  • 打开
  • 打开
  • </body> <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> </textarea>

    <input style="CURSOR: hand" onfocus=this.blur() onclick="runEx('code1')" type=button value=运行代码> <input style="WIDTH: 95px; CURSOR: hand" onfocus=this.blur() onclick=cycode(code1) type=button value=复制到剪贴板 name=Submit> <input style="CURSOR: hand" onfocus=this.blur() onclick=svcode(code1) type=button value=另存代码> [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

    找到 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

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

    运行代码框

    <textarea class=fm id=code style="WIDTH: 519px; HEIGHT: 174px" rows=12 cols=82><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> </textarea>

    <input style="CURSOR: hand" onfocus=this.blur() onclick="runEx('code')" type=button value=运行代码> <input style="WIDTH: 95px; CURSOR: hand" onfocus=this.blur() onclick=cycode(code) type=button value=复制到剪贴板 name=Submit> <input style="CURSOR: hand" onfocus=this.blur() onclick=svcode(code) type=button value=另存代码> [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

    好,点道为止,就讲这些!

    </td> </tr> </table>
    ↑返回目录
    前一篇: 网页两侧浮动广告代码
    后一篇: 调试javascript的好方法