是否可以在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 [重复]

浏览器控制台 - 如何在每个页面重定向中包含javascript代码?

Laravel Javascript - 检查会话中是否存在主题,添加类

如何在 chrome 中的内联 javascript 中添加断点

javascript可以点击一个div吗?

javascript:通过原型向方法添加行为 - 渗透代码