我有过
<span class="cssButton"><a href="javascript:void(0);" class="buttonBlue" onclick="swfu.startUpload();"> <img src="http://uber-upload.com/img/icons/up_16.png" alt=""/> Uber-Upload! </a></span>
我想做的是,如果你按下那个按钮,它还会设置一个变量,如果你试图离开这个页面,它会弹出一个“你确定要离开这个页面吗”的警报,以防止人们在上传过程中意外离开。
不要担心在上传完成后取消变量设置,我会补充这一点,我只需要你们中的一个聪明的程序员让我成为一个框架。
谢谢!
发布于 2009-08-20 20:35:47
将此声明添加到页面:
var upcount = 0;将onclick更改为:
onclick="++upcount; swfu.startUpload();"如果swfu在上传完成后给了你某种事件,那么就把这个放在上面:
--upcount;并添加此处理程序:
window.onbeforeunload = function() {
if (upcount > 0) {
return "The upload is still in progress, leaving the page will cancel it.";
}
}在浏览器尊重onbeforeunload的情况下,这将会起作用。大多数情况下,他们都是这样做的。他们没有的地方,好吧,你试过了。请注意,通过使用计数器,您将允许多次上传。
您可以考虑使用attachEvent (IE)或addEventListener (标准)(或者像Prototype或jQuery这样的库来为您消除差异)来附加事件,而不是使用属性。使用属性(也称为DOM0处理程序)是相当过时的,而且有一些限制(每个元素每个事件只有一个处理程序)。但它仍然可以工作。
发布于 2009-08-20 20:26:10
function warnUser()
{
if(dataIsDirty)
{
return "You have made changes. They will be lost if you continue.";
}
else
{
// Reset the flag to its default value.
dataIsDirty = false;
}
}
function isDirty()
{
dataIsDirty = true;
}
function isClean()
{
dataIsDirty = false;
}然后,您可以像在onbeforeunload事件上一样使用它。
window.onbeforeunload = warnUser;
dataIsDirty = false; //Or true, depending on if you want it to show up even if they dont' make changes)然后使用它,只需对任何你不想触发它的东西使用'isClean‘函数(例如,保存),或者你可以在事件离开之前将'isDirty’附加到任何你想要触发它的事件上(比如,编辑一个表单域)。
发布于 2009-08-20 20:24:04
依赖于onbeforeunload充其量也是粗略的。因为垃圾邮件发送者已经以同样的方式滥用了行为,您建议人们这样做的能力已经基本上被移除了。
现在,如果close事件是通过激活按钮或类似按钮触发的,则只能响应onbeforeunload。
https://stackoverflow.com/questions/1308575
复制相似问题