6

我正在制作一个小型 google chrome 扩展程序,它正在监视页面正在进行的所有调用。这个想法是记录页面的行为方式以及进行了多少外部调用。除了我需要获取发起呼叫的页面的源 URL 的部分之外,一切正常。

例如,我在浏览器中访问 www.stackoverflow.com,然后我的 onbeforerequest 列表器启动并给我所有的调用。到目前为止,一切都很好。但我仍然想要进行调用的页面的名称,在这种情况下我想要:“www.stackoverflow.com”和调用的所有者。

我尝试从选项卡中获取它,但 chrome.tabs.get 使用回调,并且在它全部结束之前没有调用它,我处理了所有调用。

关于如何获取源网址的任何想法?

编辑 我现在使用此代码获取 url,但它一直返回“未定义”:

var contentString = "";
chrome.webRequest.onBeforeRequest.addListener(
  function (details) {
      var tabid = details.tabId;      
      var sourceurl = "N/A";
      if (tabid >= 0) {
          chrome.tabs.get(parseInt(tabid), function (tab) {
              sourceurl = tab.url;
              alert(sourceurl);
          });
      }      
      });

发出警报时,我对每个请求都未定义

编辑 2 - 这对我有用

chrome.tabs.get(parseInt(tabid), function (tab) {
              if (tab != undefined) {
                  alert(tab.url);
              }
          });
4

2 回答 2

1

onBeforeRequest 返回一个 TabID,然后您可以使用选项卡 APIget的方法来获取对选项卡的引用,从而获取页面的 URL。

于 2013-02-28T10:27:07.053 回答
0

您可以使用从 Chrome 63 版本开始支持的details.initiator(有关详细信息,请参阅此处)。下面你可以看到Chrome APIs 页面上提到的关于启动器的内容。

发起请求的来源。这不会通过重定向而改变。如果这是一个不透明的来源,将使用字符串“null”。

于 2019-05-24T07:05:52.953 回答