我目前在我的主页面中有一个iframe,其中有一些复选框需要在离开iframe之前进行操作,即,如果用户开始检查复选框并在中途点击它们,然后单击主页面上的,即离开iframe,我希望能够捕获/验证他们已经离开了iframe,并提示他们显示一条消息,说“请注意:您将丢失此处输入的所有数据 - 离开:是/否?”输入消息。
任何帮助/网站都将不胜感激。
感谢。 贝。
答案 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
和位置哈希以及秘密伏都教黑魔法来交叉网站的图书馆。