【发布时间】:2015-05-12 04:53:04
【问题描述】:
我说的是样式化对话框,而不是无法设置样式的默认“beforeunload”对话框。
见脸书:
制作这个最不显眼的方法是什么?最好是我声明一次的脚本,并且神奇地总是有效。
我正在考虑以下几点:
function showCustomDialog()
{
[...]
}
var unfinished = true;
$('a').click(function()
{
if ( unfinished )
{
window.showCustomDialog( { originalUrl: $(this).attr('href') } );
return false;
}
}
但我担心这会打破使用<a> 元素触发 JS 行为或 JavaScript 触发 window.location.href 更改的情况。
有没有更好的、不突兀的方法?
补充说明 - 他们还让它为后退按钮工作。
额外说明 - 显然,当他们无法控制时,他们会退回到默认对话框。
【问题讨论】:
-
只有 beforeunload() 可以防止意外的后退按钮点击。我同意它看起来会更好,但默认值确实采用了用户的主题并且看起来像他们期望的那样。自定义它会失去可用性和功能。
-
嗯,好点。我不知道他们如何做到这一点,但他们也有返回按钮工作:)
-
Brain dump: Facebook 可能会提供/加载与普通网络服务器不同的页面,从而使他们能够完全控制一切。这就是某些元素(例如聊天栏)在加载其余内容时保持持久性的方式。为了自己实现这一点,您可以让所有页面通过 AJAX 自行加载,设置内容,并使用
history.replaceState更新 URL。至于后退按钮,他们可能使用onbeforeunload来触发上一个请求(面包屑)。 -
他们可能正在使用 history api 和 onpopstate developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/…
-
好的,让我的评论变成“只有 beforeunload() 可以防止意外的 home 按钮点击”...
标签: javascript jquery onbeforeunload onunload