2

クリック イベントが発生するたびに 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);

      }
    }
4

1 に答える 1

0

fadeIn().delay(500).fadeOut() が原因だったようです。フェードアウトが発生するとすぐに、IE9 がクラッシュしました。フェードアウトを削除しましたが、クラッシュは発生しませんでした。遅延を使用する代わりに、タイムアウト関数を使用してフェードアウトを処理し、クラッシュしなくなりました。

    $('.icons > .successMessage').clone().html(oMessage).appendTo(oAppend).delay(100).fadeIn('slow');
    setTimeout(function () { oAppend.find('.successMessage').fadeOut().remove(); }, 2500);
于 2012-06-26T19:04:56.690 に答える