【发布时间】:2010-02-03 12:14:25
【问题描述】:
我有一个 Flash 应用程序,它重定向到另一个页面。 我很想捕获任何其他窗口卸载事件(单击链接/提交表单)并警告用户他们将失去他们在 Flash 应用程序中的进度。
但是,我找不到任何方法来判断 URL/窗口卸载的点击/更改是由 Flash 触发还是由普通链接等触发。
有什么方法可以检测到这一点,它的可靠性如何?
【问题讨论】:
标签: javascript flash events window
我有一个 Flash 应用程序,它重定向到另一个页面。 我很想捕获任何其他窗口卸载事件(单击链接/提交表单)并警告用户他们将失去他们在 Flash 应用程序中的进度。
但是,我找不到任何方法来判断 URL/窗口卸载的点击/更改是由 Flash 触发还是由普通链接等触发。
有什么方法可以检测到这一点,它的可靠性如何?
【问题讨论】:
标签: javascript flash events window
无法直接在事件处理程序中判断导致卸载事件的原因。但是,您可以通过将 onclick 事件处理程序附加到页面上设置变量的每个链接来实现此目的。在 jQuery 中:
$("A").click(function(){window.clickedLink = this});
您可能会在您的卸载事件中阅读 clickedLink 并找出区别。
【讨论】:
如何从 Flash 重定向到其他页面?
您可以做的是使用 Javascript 函数重定向,并从 Flash 调用它(使用 ExternalInterface)。当您调用此重定向时,您设置了一个特定标志,表明您正在从 Flash 重定向。然后为窗口卸载事件设置一个监听器,并检查是否设置了标志。如果没有,您可以将消息显示给用户。否则,只需跳过此并重定向。
<script>
var callFromFlash = false;
window.unload = unloadPage;
//call this function from Flash using ExternalInterface
function doRedirect(url)
{
callFromFlash = true;
//redirecting
window.location.href = url;
}
function unloadPage()
{
if(!callFromFlash)
{
//show message and wait for response
}
}
</script>
【讨论】: