【发布时间】:2011-04-13 16:58:38
【问题描述】:
我想使用特定于 javascript 的浏览器创建一个网页。
例如:
我可以在我的编码部分使用这样的代码
chrome.tab.onRemoved.addListener() 在我的网页中。
如果可以的话,请给我建议。
【问题讨论】:
-
你能说出你到底想达到什么目标吗?
-
我需要捕捉标签关闭或浏览器关闭事件,以便在关闭前询问客户反馈。
我想使用特定于 javascript 的浏览器创建一个网页。
例如:
我可以在我的编码部分使用这样的代码
chrome.tab.onRemoved.addListener() 在我的网页中。
如果可以的话,请给我建议。
【问题讨论】:
你到底想达到什么目标?
如果您想知道加载网页的选项卡何时关闭,window.onunload 应该可以帮助您。
如果您想知道另一个网页何时关闭,您不能这样做。
更新:
您说您想知道用户何时关闭浏览器或选项卡。这是不可能的。
但出于您的目的(获取反馈),我认为您需要的只是区分用户是导航到您页面中的链接,还是用户正在输入另一个 URL(或通过单击收藏夹)。
我认为对于您的要求,用户是否关闭浏览器,或者他是否键入另一个 URL,都是一样的 - 用户正在离开您的网站,而当时您说您要收集反馈。
这可以在 javascript 中完成。
对于您网页中的所有点击 可能会导致页面刷新 (超链接、按钮、...),设置一个标志。
在window.onunload,检查是否 此标志已设置。
- 如果已设置,则 用户点击了您的链接 页面,什么都不做。
- 如果标志不是 设置然后用户正在导航, 是时候收集反馈了。
让我知道这是否可行。
PS:请注意,window.unload 期间的弹出窗口/任何干扰都可能非常烦人。 我知道这可能是给你的要求。但如果可能,请尝试其他机制从用户那里收集(自愿)反馈。
【讨论】:
不,您不能从网页访问特定于扩展程序的 API。
【讨论】:
Navigator 对象包含有关访问者浏览器的所有信息。
https://developer.mozilla.org/en-US/docs/Web/API/Window.navigator
我认为这几乎是与特定浏览器交互的可能范围。您无法访问其他选项卡(出于安全原因)或告知选项卡何时关闭。
【讨论】:
您可以使用 onbeforeunload 事件:
<html>
<head>
<script>
var exit = 1;
function handleClose()
{
if (exit)
{
alert("Closing");
}
}
</script>
</head>
<body onbeforeunload="handleClose()">
<a href="test.html" onclick="exit=0">Navigate to other page</a>
</body>
</html>
【讨论】:
onbeforeunload 仅适用于已关闭的窗口,不适用于已关闭的浏览器。