javascript - iFrame 验证

标签 javascript jquery

我目前在我的主页中有一个 iframe,其中有许多复选框需要在离开 iframe 之前进行操作。即,如果用户开始检查复选框并在中途通过他们然后在主页上单击返回,即离开 iframe,我希望能够捕获/验证他们已经离开 iframe 并提示他们一条消息指示这个,用“注意:您将丢失此处输入的所有数据 - 离开:是/否?”输入消息。

最佳答案

Prompting a User to Save When Leaving a Page .这篇 4guys 文章听起来正是您所需要的。它讨论了 onbeforeunload 事件。有一些很棒的posts在 stackoverflow 上也有关于 onbeforeunload 的内容。


看来 onbeforeunload 确实不会为 iframe 触发。 SCSS !

下面是一些应该可以正常工作的示例代码。这仅在您位于同一域中时才有效,否则 same origin policy将阻止 iframe 与父级对话。

我也没有在许多浏览器中测试过这些,所以 YMMV

这里有两个选项,具体取决于您希望将更改逻辑提示放在何处。

选项一涉及 iframe 在发生更改时通知父窗口。

父窗口javascript:

    window.onbeforeunload=closeIt;
    var changes = false;
    function closeIt()
    {
      if (changes)
      {
          return "Yo, changes, save 'em?";
      }
    }
    function somethingChanged() {
        changes=true;
    };

iframe javascript:

    $(function() {
        $('input').change(parent.somethingChanged);
    });

选项二涉及 iframe 控制父窗口的 onbeforeunload

父窗口 javascript:

没有 :-)

iframe javascript:

    $(function() {
        parent.window.onbeforeunload = myCloseIt;
        $('input').change(somethingChanged);
    });
    var changes = false;
    function myCloseIt()
    {
      if (changes)
      {
          return "Yo, changes, save 'em?";
      }
    }
    function somethingChanged() {
        changes=true;
    };

在任何一个选项中,原始的 changes 变量都可以加强一点,可能使用 4guys 文章中的技术,看看是否真的有任何变化。 p>


如果它们在不同的域中,但您仍然负责 HTML 的“两面”,那么仍然有一些选择,它们只是更难。

xssinterface是一个使用 postMessage 和位置哈希和 secret 巫毒魔法来跨站点通信的库。

关于javascript - iFrame 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1052677/

相关文章:

php - 将 Javascript 变量传递给 PHP POST

javascript - 如何在点击时启动动画

html - 检查最近的 radio 时更改 DIV 背景

javascript - 我想在悬停时更改 html 类

javascript - Node.js socket.io 的 Dojox 套接字异常

javascript - 选择复选框列表上的所有功能

javascript - CKEDITOR 脚本何时加载并准备好使用?

javascript - 使用 jQuery 引用嵌套的 HTML 元素

Javascript 琐事 : check for equality against the empty object

javascript - $_POST 变量未通过表单传递