Chrome扩展程序,onbeforerequest,哪个页面正在拨打电话?

时间:2013-02-28 10:22:33

标签: google-chrome-extension

我正在制作一个小的谷歌浏览器扩展程序,正在查看页面正在进行的所有调用。我们的想法是记录页面的行为方式以及进行多少次外部调用。除了我需要获取启动呼叫的页面的源URL的部分之外,一切都正常工作。

例如我在我的浏览器中访问www.stackoverflow.com,然后我的onbeforerequest lister开始并给我所有的电话。到现在为止还挺好。但我仍然想要打电话的页面的名称,在这种情况下我想要:“www.stackoverflow.com”和电话的所有者。

我尝试从标签中获取它,但chrome.tabs.get使用了一个回调,并且在它全部结束之前没有被调用,我处理了所有的调用。

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

修改 我现在正在使用此代码来获取网址,但它仍然会返回“未定义”:

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);
              }
          });

2 个答案:

答案 0 :(得分:1)

onBeforeRequest returns a TabID,然后您可以使用tabs APIget方法获取对标签的引用,从而获得该网页的网址。

答案 1 :(得分:0)

您可以使用 details.initiator (有关更多详细信息,请参见here),该功能自Chrome 63版本开始受支持。在下面,您可以看到Chrome APIs page上关于发起者的内容。

  

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