【问题标题】:JavaScript + onunload eventJavaScript + onunload 事件
【发布时间】:2009-08-10 13:26:25
【问题描述】:

我想触发 onunload 事件进行一些清理操作,我有多个选项卡(导航栏)显示多个指向不同网页的链接,我的问题是即使我在其他页面中,我的卸载功能也在其他一些jsp的标签被触发。请帮助解决这个问题,我希望在用户关闭该页面中的浏览器时调用卸载函数。

【问题讨论】:

    标签: javascript onunload


    【解决方案1】:

    我不确定你是如何让 onunload 事件工作的……我发现使用 onunload 事件的问题是它在页面被卸载后被触发。这意味着由于页面已卸载,无法再执行 JavaScript。

    您应该考虑使用 onbeforeunload 事件。 此事件有点独特,因为如果处理此事件的函数返回任何内容,则会显示一个弹出窗口,询问用户是否愿意继续操作。因此,在您的情况下,请确保您的函数不返回任何内容。关于 onbeforeunload 事件要注意的另一件事是,此时 Opera 不支持它(Safari、FireFox 和 Internet Explorer 支持)。

    每次卸载页面时都会执行 onbeforeunload 和 onunload 事件。如果页面上的控件将页面提交给服务器代码,则页面会被卸载并执行 JavaScript。

    如果您不希望在页面上的控件将其提交到服务器时执行 JavaScript,您必须实现一些检查以查看您的代码是否应该执行。

    这很简单,向页面添加一个 JavaScript 布尔值和一个将 this 布尔值设置为 true 的函数。确保页面中回传到服务器代码的每个元素在提交页面之前都将此布尔值设置为 true。在你的 onbeforeunload 事件中检查这个布尔值,看看你的清理代码是否应该被执行。

    希望这会有所帮助,

    -弗林尼

    【讨论】:

      【解决方案2】:

      似乎卸载函数是在全局范围内创建的。尝试仅将该功能放置在您想要操作的页面上。

      【讨论】:

      • 亲爱的 Elzo,问题是函数是在 chat.jsp 的正文中声明的,现在我有一些选项卡链接到其他网页,如编辑、主页、查看、聊天、nw,当我编辑一些编辑页面中的文本,即使我在 chat.jsp 中声明的卸载功能被调用,我只是希望当用户在 chat.jsp 中关闭浏览器时,当我切换到其他选项卡时不应该调用它
      【解决方案3】:

      您有框架集页面?你想在他们离开框架集时得到通知吗?在框架集上添加一个 onbeforeunload。我不知道你说的清理是什么意思,但你不能在跨浏览器安全卸载期间发送 XHR

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-17
        相关资源
        最近更新 更多