我正在制作一个小的谷歌浏览器扩展程序,正在查看页面正在进行的所有调用。我们的想法是记录页面的行为方式以及进行多少次外部调用。除了我需要获取启动呼叫的页面的源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);
}
});
答案 0 :(得分:1)
onBeforeRequest
returns a TabID,然后您可以使用tabs API的get
方法获取对标签的引用,从而获得该网页的网址。
答案 1 :(得分:0)
您可以使用 details.initiator (有关更多详细信息,请参见here),该功能自Chrome 63版本开始受支持。在下面,您可以看到Chrome APIs page上关于发起者的内容。
发起请求的来源。这不会改变 通过重定向。如果这是一个不透明的原点,则字符串“ null”将 被使用。