【问题标题】:jQuery: Code works in Firefox but not in IEjQuery:代码在 Firefox 中有效,但在 IE 中无效
【发布时间】:2011-12-17 12:39:54
【问题描述】:

下面的代码应该同步两个 iFrame 的水平滚动条。 它适用于 Firefox,但不适用于 IE。 在 IE 中,没有进入 ifr1.scroll() 函数。

<SCRIPT> 
$(window).load( function(){

  var ifr1 = $( $('#UserQueue_Header').contents() );
  var ifr2 = $( $('#UserQueue_Detail').contents() );

  ifr1.scroll( function(){      
     ifr2.scrollLeft(ifr1.scrollLeft());
  });

  ifr2.scroll( function(){
     ifr1.scrollLeft(ifr2.scrollLeft());
  });
});
</SCRIPT>

<iframe src="test.html" id="UserQueue_Header"></iframe>
<iframe src="test.html" id="UserQueue_Detail"></iframe>

【问题讨论】:

  • -1。什么不起作用?你试过什么?你有任何错误吗?请不要只发布代码。
  • “代码在 Firefox 中有效,但在 IE 中无效”——通常是这种情况
  • @swatkins,但这种情况除外。我很惊讶它完全有效。
  • 从代码示例中可以清楚地看到他所说的“不起作用”是什么意思。该代码只做两件事,而且它们几乎完全相同。
  • 为什么不用 $(document).ready() 而不是 window.load

标签: javascript jquery internet-explorer firefox cross-browser


【解决方案1】:

您声明了 jQuery '$' 变量两次。对于这些行:

 var ifr1 = $( $('#UserQueue_Header').contents() );
 var ifr2 = $( $('#UserQueue_Detail').contents() );

你只需要:

 var ifr1 = $('#UserQueue_Header').contents();
 var ifr2 = $('#UserQueue_Detail').contents();

【讨论】:

  • 不,这样 OP 就不必稍后在代码中执行 $(ifr1) 和 $(irf2)。
  • IE的问题是没有进入ifr1.scroll()函数。
【解决方案2】:
<SCRIPT language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></SCRIPT>

$(window).load( function(){

  var ifr1 = $(window.frames[0]);
  var ifr2 = $(window.frames[1]);

  ifr1.scroll( function(){ 

     ifr2.scrollLeft(ifr1.scrollLeft());
  });

  ifr2.scroll( function(){

     ifr1.scrollLeft(ifr2.scrollLeft());
  });
});

<frameset>
    <frame src="test.html"/>
    <frame src="test.html"/>
</frameset>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2013-10-30
    • 2011-10-14
    • 2010-11-24
    相关资源
    最近更新 更多