2013-06-29 62 views
2

我正在制作一个Chrome扩展,它将URL分享到一个网站。现在我需要一个可以在浏览器中获取当前URL的代码。当我点击图标时,我想打开新标签(http://www.thatsite.com/sharer.php?u= + current URL)。如何在Chrome上点击按钮获取当前网址

我有两个文件:

的manifest.json

{ 
    "name": "Share on that site", 
    "version": "1", 
    "browser_action": { 
     "default_icon": "icon.png" 
    }, 
    "background": { 
     "scripts": ["background.js"] 
    }, 
    "permissions": ["tabs"], 
    "manifest_version": 2 
} 

和background.js

chrome.browserAction.onClicked.addListener(function(activeTab){ 
    var newURL = "http://www.leegly.com/sharer.php?u=" + <current URL here>; 
    chrome.tabs.create({ url: newURL }); 
}); 
+0

我编辑了您的文章,使其成为conciser。在编辑过程中,我还从清单文件中删除了一个'});',假设它是一个复制粘贴错误。这些字符的存在会导致无效的清单文件,这会阻止您的扩展加载。如果您的原始清单文件* did *包含此错误,则只需从您编辑的问题中复制粘贴当前清单(并使用“activeTab”而不是“标签”,如我在下面的答案中所建议的那样)。 –

回答

2

chrome.browserAction.onClicked事件被分派,第一个参数保存关于当前选项卡的信息。

要获取当前选项卡的URL,请首先在清单文件中请求activeTab permissiontabs权限是不必要的,您可以忽略它)。然后,获得网址是阅读tab.url简单:

chrome.browserAction.onClicked.addListener(function(tab) { 
    var url_encoded_url = encodeURIComponent(tab.url); 
    var newURL = "http://www.leegly.com/sharer.php?u=" + url_encoded_url; 
    chrome.tabs.create({ url: newURL }); 
}); 

请注意,我用encodeURIComponent。否则,如果当前URL包含&符号(&),则代码将失败。

+0

它的工作原理!谢谢 :) – user93146

-1

您可以使用下面的功能

chrome.tabs.getSelected(null,function(tab) { 
    var taburl = tab.url; 
}); 
+0

我试过了。不起作用。 – user93146

+0

'chrome.tabs.getSelected'自Chrome 16以来已被弃用。 –

+0

@Rob W不必要的downvote我认为。版本无法在OP中看到,目前正在浏览器中运行。 –