我有一个简单的Chrome扩展程序,可添加浏览器操作.当扩展程序的弹出窗口打开时,它需要访问当前选项卡的URL.由于它不需要访问所有选项卡,我只是拥有activeTab清单中指定的权限:
{
"manifest_version": 2,
"name": "RequireJS Test",
"version": "0.0.1",
"description": "Test RequireJS and the activeTab permission.",
"permissions": [
"activeTab"
],
"browser_action": {
"default_popup": "popup.html"
},
"web_accessible_resources": [
"js/*",
"html/*",
"css/*",
"img/*"
]
}
Run Code Online (Sandbox Code Playgroud)
理论上,这应该让弹出窗口访问活动选项卡的URL,但是当我从require()弹出窗口的main.js文件中的调用中查询选项卡时,不会返回URL :
require([], function() {
chrome.tabs.query({"active": true, "lastFocusedWindow": true}, function (tabs) {
var url = tabs[0].url;
console.log("URL from main.js", url);
});
console.log("URL from global var accessed in main.js", tabURL);
});
Run Code Online (Sandbox Code Playgroud)
控制台显示undefinedURL.但是,如果我从一个不使用的普通.js文件中进行相同的调用require(),它可以正常工作:
chrome.tabs.query({"active": true, "lastFocusedWindow": true}, function (tabs) …Run Code Online (Sandbox Code Playgroud) 我正在制作Google Chrome扩展程序,我需要获取当前页面的网址和标题.我怎样才能做到这一点?
根据我的知识,不可能直接通过获取tab.url(仅在popup.html中可能)并且进行消息传递也需要打开popup.html.反正有没有绕过这个并从background.html获取当前页面的网址?
我最好的镜头是消息传递,我在background.html中使用了这段代码
var bg = chrome.extension.getPopupPage();
var myURL = bg.myURL;
Run Code Online (Sandbox Code Playgroud)
然后在popup.html我有:
chrome.tabs.getSelected(null, function(tab) {
var myURL = tab.url;
})
Run Code Online (Sandbox Code Playgroud)
无论如何,上述根本不起作用.有人知道这样做的方法而不必实际打开弹出窗口吗?
做了一些研究之后,我提出的代码就是:
var outUrl;
// first get the windowid
chrome.windows.getCurrent(function(window) {
// then get the current active tab in that window
chrome.tabs.query({
active: true,
windowId: window.id
}, function (tabs) {
var tab = tabs[0];
document.write(tab.url)
});
});
Run Code Online (Sandbox Code Playgroud)
这是在我的弹出式html文件中调用的javascript文件中.但它不显示当前网站的URL,而是显示任何内容.
我在这个和其他网站上发现了很多关于这个的帖子,但是我还没有能够实现任何所谓的解决方案.
任何帮助将不胜感激.
两种方法都Uncaught TypeError: Cannot read property 'query' of undefined对我的内容脚本产生相同的错误...我已经看过如何使用javascript在chrome扩展程序中获取当前Tab的URL,以及如何使用chrome.tabs.getCurrent来获取页面对象。 Chrome扩展程序?尽管我仍然不确定自己做错了什么。
manifest.json
{
"name": "Extension Tester",
"version": "0.0.1",
"manifest_version": 2,
"description": "Tester",
"permissions": [
"tabs"
],
"content_scripts": [
{
"matches": ["https://www.google.com/"],
"js": [
"inject.js"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
inject.js
chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
console.log(tabs[0].id);
});
Run Code Online (Sandbox Code Playgroud)
要么
chrome.tabs.getCurrent(function (tab) {
console.log(tab.id);
});
Run Code Online (Sandbox Code Playgroud) 我正在构建Google Chrome扩展程序,我正在尝试在弹出窗口中显示所选窗口.(我说的是当你点击扩展图标时显示的弹出窗口).
我试图使用文档,但我不太了解它.具体来说,我试图使用:
chrome.windows.getCurrent(function(w) {
chrome.windows.get(w.id,
function (response){
alert(response.location.href);
});
});
Run Code Online (Sandbox Code Playgroud)
但它没有用.有任何想法吗?
谢谢(抱歉,如果英语不好).