2012-08-26 24 views
0

我不知道为什么,但是这段代码让IE9和Safari崩溃,并且在Opera中完全不起作用。JS代码让IE9和Safari冻结并且在Opera中不起作用?

$('#contentPage').on('DOMSubtreeModified', function(){ 
    if($(".iframey[date-current]").length){ 
    $(".iframey:not(.hidden)").prevUntil("iframe").addClass('smaller'); 
}}); 

我该怎么做才能使这段代码在所有浏览器中都能正常工作?

---编辑---

中的jsfiddle

http://jsfiddle.net/rzP5S/

在Chrome和Firefox

+0

是什么 “撞车” 呢?整个浏览器关闭/挂起,或代码只是没有做任何事情,或...? – nnnnnn

+0

您是否曾尝试在所有内容的末尾放置分号';'以便使用'}})完成;'?这在技术上应该如此 – stackunderflow

+0

所以......它基本上不适用于任何浏览器? (-FF) – Charlie

回答

0

什么@Musa是说是正确的。有一个无限循环。你有什么理由需要在DOMSubtreeModified中处理它吗?你不能只是在点击事件中完成工作吗?这似乎有同样的表现:

$(".onePost").live("click", function() { 

    $(".onePost").removeClass('smaller'); 

    $("iframe") 
     .addClass('hidden') 
     .removeAttr('src') 
     .removeAttr('date-current'); 

    $(this).nextAll("iframe:eq(0)") 
     .removeClass('hidden') 
     .removeAttr('style') 
     .attr({src: $(this).data('href')}) 
     .attr('date-current', 'here'); 

    if($(".iframey[date-current]").length){ 
     $(".iframey:not(.hidden)").prevUntil(".iframey").addClass('smaller'); 
    } 
}); 

http://jsfiddle.net/rPPSj/

2

您正在修改的修改DOM事件处理程序的DOM工作炉排的代码,你应该检查修改是否是由于你的代码在处理程序中,以防止无限循环。

而且

警告!本规范中定义了DOMSubtreeModified事件类型以供参考和完整,但本规范不赞成使用此事件类型。

http://www.w3.org/TR/DOM-Level-3-Events/#event-type-DOMSubtreeModified

+0

这是完整的代码http://jsfiddle.net/rzP5S/ –

相关问题