2010-01-26 74 views
1

我恨的IE6 fallover,其实我希望微软将迫使指出,杀了该死的东西石头死补丁。以下脚本在IE> 6 & FF,WebKit(chrome etal)中没有问题就能正常工作;有任何想法吗?脚本导致IE6并没有错误

(function getElementsByClass(searchClass) { 
     node = document; 
     tag = '*'; 
     var els = node.getElementsByTagName(tag); 
     var elsLen = els.length; 
     var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)"); 
     var count = 1; 
     for (i = 0, j = 0; i < elsLen; i++) { 
      if (pattern.test(els[i].className)) { 
        var re1='.*?'; // Non-greedy match on filler 
        var re2='(\\\'.*?\\\')'; // Single Quote String 1 
        var p = new RegExp(re1+re2,["i"]); 
        var m = p.exec(els[i].getAttribute("onclick")); 
        var popURL = ""; 
        if (m != null) 
        { 
         var strng1=m[1]; 
         popURL = strng1.replace(/'/g,''); 
        } 

        els[i].setAttribute("href", popURL + "?keepthis=true&tb_iframe=true&height=430&width=400"); 
        els[i].setAttribute("class", "thickbox"); 
        els[i].removeAttribute("onclick"); 
        j++; 
        count++; 
      } 
     } 
     // return count; Ignore the return 
})("vtthickbox"); 
+0

不是一个真正的答案,但你可以做到这一点很容易地通过jQuery的 –

+0

啊哈我知道,我们使用JQuery广泛;图书馆不应该取代知道什么,虽然发生; O) –

+0

良好的理由的任何使用标准DOM在那里你可以... http://dante.dojotoolkit.org/taskspeed/ :O)JQuerys不错,但抽象总是会执行速度较慢 –

回答

3

typeof els[i].getAttribute("onclick")返回function在我的IE6中,但FF,Opera返回string

我不认为RegExp.exec可以处理function对象。

并且由此,typeof m[1]成为undefined,这也导致popURLundefined

+0

啊应该测试的类型,我认为IE8返回适当的字符串值,如同7.看起来有点恶意崩溃浏览器。 –

+0

问题与中的getAttribute

+0

呀,我期待到这一点。谢谢。 – YOU

1

为什么不直接用这个来代替:

function getElementsByClass(searchClass) { 
var classElements = new Array(), 
    node = document, 
    tag = '*', 
    els = node.getElementsByTagName(tag), 
    elsLen = els.length, 
    pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)"), 
    i, 
    j; 
for (i = 0, j = 0; i < elsLen; i++) { 
    if (pattern.test(els[i].className)) { 
    classElements[j] = els[i]; 
    j++; 
    }; 
}; 
return classElements; 
}; 

然后把onclick事件处理逻辑的getElementsByClass()功能之外。

+0

我尝试了一些方法,但是我会对此有所了解,并且看看它是否有更快的答复。 –