是否可以在javascript中添加浏览器代码
Posted
技术标签:
【中文标题】是否可以在javascript中添加浏览器代码【英文标题】:Is it possible to add a browser code in javascript 【发布时间】:2011-04-13 16:58:38 【问题描述】:我想使用特定于 javascript 的浏览器创建一个网页。
例如:
我可以在我的编码部分使用这样的代码
chrome.tab.onRemoved.addListener()
在我的网页中。
如果可以的话,请给我建议。
【问题讨论】:
你能说出你到底想达到什么目标吗? 我需要捕捉标签关闭或浏览器关闭事件,以便在关闭前询问客户反馈。 【参考方案1】:你到底想达到什么目标?
如果您想知道加载网页的选项卡何时关闭,window.onunload 应该可以帮助您。
如果您想知道另一个网页何时关闭,您不能这样做。
更新: 您说您想知道用户何时关闭浏览器或选项卡。这是不可能的。
但出于您的目的(获取反馈),我认为您需要的只是区分用户是导航到您页面中的链接,还是用户正在输入另一个 URL(或通过单击收藏夹)。
我认为对于您的要求,用户是否关闭浏览器,或者他是否键入另一个 URL,都是一样的 - 用户正在离开您的网站,而当时您说您要收集反馈。
这可以在 javascript 中完成。
对于您网页中的所有点击 可能会导致页面刷新 (超链接、按钮、...),设置一个标志。 在
window.onunload
,检查是否 此标志已设置。 - 如果已设置,则 用户点击了您的链接 页面,什么都不做。 - 如果标志不是 设置然后用户正在导航, 是时候收集反馈了。
让我知道这是否可行。
PS:请注意,window.unload 期间的弹出窗口/任何干扰都可能非常烦人。 我知道这可能是给你的要求。但如果可能,请尝试其他机制从用户那里收集(自愿)反馈。
【讨论】:
我只需要知道用户是在关闭页面还是只是在导航。在 window.onunload 和 window.onbeforeunload 中,事件触发所有导航和关闭事件。我特别需要找到浏览器或窗口关闭事件。 我认为无法查看用户是否正在关闭窗口。但是出于您的目的,我认为查看用户是否通过您页面中的某个链接导航,或者用户是否输入了另一个 URL(或单击书签)以离开您的页面就足够了。已用可能的解决方案更新了答案。 这应该是“自愿”反馈,顺便说一句。 @Nivas:刷新会发生什么?用户没有离开这里。未设置标志。这里将假设它是页面浏览器/标签关闭。【参考方案2】:不,您不能从网页访问特定于扩展程序的 API。
【讨论】:
【参考方案3】:Navigator 对象包含有关访问者浏览器的所有信息。
https://developer.mozilla.org/en-US/docs/Web/API/Window.navigator
我认为这几乎是与特定浏览器交互的可能范围。您无法访问其他选项卡(出于安全原因)或告知选项卡何时关闭。
【讨论】:
【参考方案4】:您可以使用 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
仅适用于已关闭的窗口,不适用于已关闭的浏览器。
您的浏览器将首先关闭所有选项卡,然后自行关闭。所以在浏览器关闭之前会调用WINDOW。 developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/…以上是关于是否可以在javascript中添加浏览器代码的主要内容,如果未能解决你的问题,请参考以下文章
浏览器控制台 - 如何在每个页面重定向中包含javascript代码?
Laravel Javascript - 检查会话中是否存在主题,添加类