首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript和onbeforeunload?

Javascript和onbeforeunload?
EN

Stack Overflow用户
提问于 2009-08-20 20:18:49
回答 3查看 2K关注 0票数 1

我有过

<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>

我想做的是,如果你按下那个按钮,它还会设置一个变量,如果你试图离开这个页面,它会弹出一个“你确定要离开这个页面吗”的警报,以防止人们在上传过程中意外离开。

不要担心在上传完成后取消变量设置,我会补充这一点,我只需要你们中的一个聪明的程序员让我成为一个框架。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-20 20:35:47

将此声明添加到页面:

代码语言:javascript
复制
var upcount = 0;

将onclick更改为:

代码语言:javascript
复制
onclick="++upcount; swfu.startUpload();"

如果swfu在上传完成后给了你某种事件,那么就把这个放在上面:

代码语言:javascript
复制
--upcount;

并添加此处理程序:

代码语言:javascript
复制
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处理程序)是相当过时的,而且有一些限制(每个元素每个事件只有一个处理程序)。但它仍然可以工作。

票数 1
EN

Stack Overflow用户

发布于 2009-08-20 20:26:10

代码语言:javascript
复制
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事件上一样使用它。

代码语言:javascript
复制
window.onbeforeunload = warnUser;
dataIsDirty = false; //Or true, depending on if you want it to show up even if they dont' make changes)

然后使用它,只需对任何你不想触发它的东西使用'isClean‘函数(例如,保存),或者你可以在事件离开之前将'isDirty’附加到任何你想要触发它的事件上(比如,编辑一个表单域)。

票数 1
EN

Stack Overflow用户

发布于 2009-08-20 20:24:04

依赖于onbeforeunload充其量也是粗略的。因为垃圾邮件发送者已经以同样的方式滥用了行为,您建议人们这样做的能力已经基本上被移除了。

现在,如果close事件是通过激活按钮或类似按钮触发的,则只能响应onbeforeunload。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1308575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档