【问题标题】:IE9 crashes after jquery click eventjquery点击事件后IE9崩溃
【发布时间】:2012-06-26 18:21:28
【问题描述】:

每当点击事件发生时,我都会遇到一个奇怪的问题,即 IE9 崩溃。我认为这是克隆功能可能是它的一个错误,所以尝试删除它但同样的问题。它适用于所有浏览器,甚至 IE7 和 8,但 9 只是不断崩溃并且不确定。

    <div class="icons">
        <span class="attMessage"></span>
        <span class="successMessage"></span>
        <span class="errorMessage"></span>
    </div>

    <div class="newSection">
        <h3>Add/Update Adjuster License</h3>
        <p>(this is where i am appending an icon from above)</p>
        <p><a title="Add license to queue" class="addLicense"></a></p>  
    </div>

_

    $('.addLicense').click(function () {
      var parent = $(this).parent();
      var license = $('.licenseOverview');
      var dropdown = $('#MainContent_ddlLicenseStates').val();
      var number = $('#MainContent_txtLicenseNumber').val();
      if (number != '') {            
        notifier(parent, "License Added To Queue", "Success");
        $('#MainContent_txtLicenseNumber').val('');
      }
      else {
        notifier(parent, "Must Enter A License Number", "Failure");
      }
    });

    function notifier(oAppend, oMessage, oMessageType) {
      var iconDiv = $('.icons');
      if (oMessageType == 'Success') {
      $('.icons > .successMessage').clone().html(oMessage).appendTo(oAppend).delay(100).fadeIn('slow').delay(500).fadeOut();
      //tried a different way since i thought clone was crashing ie9        
      //$('.icons > .successMessage').html(oMessage).appendTo(oAppend).delay(100).fadeIn('slow').delay(500).fadeOut();
      setTimeout(function () {    oAppend.find('.successMessage').remove().appendTo(iconDiv); }, 2500);
      }
      else if (oMessageType == 'Failure') {
      $('.icons > .errorMessage').clone().html(oMessage).appendTo(oAppend).delay(100).fadeIn('slow').delay(500).fadeOut();
      setTimeout(function () { oAppend.find('.errorMessage').remove() }, 2500);

      }
      else if (oMessageType == 'Warning') {
      $('.icons > .attMessage').clone().html(oMessage).appendTo(oAppend).delay(100).fadeIn('slow').delay(500).fadeOut();
      setTimeout(function () { oAppend.find('.attMessage').remove() }, 2500);

      }
    }

【问题讨论】:

  • 用FF打开...控制台有什么错误吗?
  • 在我的 IE9 上不会崩溃:jsfiddle.net/reygonzales/xgCgB
  • 问题规模似乎在 n^2 处增长。也许您的点击速度真的很快?
  • @briank 请....我编辑了您的问题以使 javascript 可读。你注意到彩色标记的不同了吗?
  • @RokoC.Buljan 谢谢,我试图弄清楚如何使用 js 来做到这一点

标签: jquery html internet-explorer-9


【解决方案1】:

看起来 fadeIn().delay(500).fadeOut() 是罪魁祸首。一旦fadeOut 发生,IE9 就崩溃了。我删除了 fadeOut 并且没有发生崩溃。我没有使用延迟,而是使用超时功能来处理淡出,不再崩溃。

    $('.icons > .successMessage').clone().html(oMessage).appendTo(oAppend).delay(100).fadeIn('slow');
    setTimeout(function () { oAppend.find('.successMessage').fadeOut().remove(); }, 2500);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    相关资源
    最近更新 更多