我和这一个人有一段时间了。我试图提醒某人,如果他们试图离开页面并已经上传了文件。棘手的部分是,如果他们提交,我希望它不要警告他们。这是一个奇怪的部分,我将在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);
}
});
});
}
答案 0 :(得分:0)
所以我发现了它。显然在IE和Firefox中,“click”事件在“beforeUnload”事件之后被触发。然而,“mouseup”事件在它们之前触发,因此这是我的解决方案。我把它绑定到“click”和“mouseup”就像这样
$jForm.find("input[type=button]:last").not($obj).bind("click.save mouseup.save", function(event){
它现在适用于所有浏览器......我会为浏览器做些什么来保持一致。感谢所有回复。