JQuery перед выгрузкой отменить с отправить для Firefox - PullRequest
0 голосов
/ 28 января 2012

У меня чертовски много времени с этим, ребята.Я пытаюсь предупредить кого-то, если он пытается покинуть страницу и уже загрузил файлы.Сложность в том, что я хочу, чтобы он не предупреждал их, если они отправляют.Это странная часть, код, который я собираюсь вставить, работает в Chrome, но всем остальным браузерам это не нравится.Это часть плагина, поэтому просто игнорируйте часть кода.

  function cleanFiles(obj){
   var $obj = $(obj),
   $jForm = $obj.parents("form");
   $jForm.find("input[type=button]:last").not($obj).bind("click.save", function(event){
    $(window).unbind('beforeunload.cleanFile unload.removeFiles');
   });
   $(window).bind('beforeunload.cleanFile', function(event){
    var localSettings = $.extend({}, settings),
    filesList = "";
    $("input[type=hidden].fileFieldLists").each(function(){
     var $obj = $(this);
     filesList += ($obj.val() || "");
    });
    if(filesList.length){
     return localSettings.defaultLeaveMessage;
    }
    $(window).bind('unload.removeFiles', function(event){
     var filesList = [];
     $("input[type=hidden].fileFieldLists").each(function(){
      var $obj = $(this),
       localSettings = $.extend({}, settings, $obj.next().data()),
       fieldValues = ($obj.val().indexOf("*") ? $obj.val().split("*") : $obj.val()),
       fieldValuesCnt = fieldValues.length;
       for(var i = 0; i < fieldValuesCnt; i++){
        filesList.push(localSettings.filepath + fieldValues[i]);
       }
     });
     if(filesList.length){
      deleteFiles(filesList.join(","), false);
     }
    });
   });
  }

1 Ответ

0 голосов
/ 30 января 2012

Итак, я нашел это. По-видимому, в IE и Firefox событие «click» запускается после события «beforeUnload». Однако событие mouseup запускается перед ними обоими, так что это было мое решение. Я привязал его к «click» и «mouseup», как это так

$jForm.find("input[type=button]:last").not($obj).bind("click.save mouseup.save", function(event){

и теперь он работает во всех браузерах ... мужик, что бы я сделал, чтобы браузеры были согласованными. Спасибо за все ответы.

...