iFrame验证

时间:2009-06-27 11:32:40

标签: javascript jquery

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

任何帮助/网站都将不胜感激。

感谢。 贝。

1 个答案:

答案 0 :(得分:1)

Prompting a User to Save When Leaving a Page。这篇4guys文章听起来像你需要的。它讨论了onbeforeunload事件。关于onbeforeunload的stackoverflow上有一些很棒的posts


似乎onbeforeunload确实不会为iframe触发。开溜!

这里有一些应该可以使用的示例代码。这仅在您位于同一个域中时才有效,否则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文章中的技术,看看是否真的是否有任何变化。


如果他们在不同的域名,但你仍然负责HTML的“双方”,那么仍然有一些选择,他们只是更难。

xssinterface是一个使用postMessage和位置哈希以及秘密伏都教黑魔法来交叉网站的图书馆。