我正在尝试编写一个简单的firefox扩展程序,该扩展程序显示用户在按下扩展程序按钮时正在查看的当前选项卡的标题。
这是我的manifest.json文件:
class Queue2(list):
'a queue class, subclass of list'
def isEmpty(self):
'returns True if queue is empty, False otherwise'
return (len(self)==0)
def dequeue(self):
'remove and return item at front of queue'
return self.pop(0)
def enqueue(self, item):
'insert item at rear of queue'
return self.append(item)
def __repr__(self):
return "Queue2({})".format(super().__repr__())
queue2 = Queue2(['a','b','c'])
duplicate = eval(repr(queue2))
print(duplicate)
duplicate.enqueue('d')
print(duplicate)
# Queue2(['a', 'b', 'c'])
# Queue2(['a', 'b', 'c', 'd'])
而且,这是我的choose_page.js文件
{
"manifest_version": 2,
"name": "Perspective",
"version": "1.0",
"description": "Displays current tab title when clicked",
"permissions": [
"tabs"
],
"icons": {
"48": "icons/border-48.png"
},
"browser_action": {
"browser_style": true,
"default_popup": "popup/choose_page.html",
"default_icon": {
"16": "icons/news-icon-16.png",
"32": "icons/news-icon-32.png"
}
}
}
每当我点击我的扩展程序按钮时,我会在控制台中收到以下输出:
-----------按钮点击------------
---------打印变量类型" activeTab"
activeTab的类型是:object
activeTab的标题是:
未定义
为什么标题是" activeTab" undefined,如何实际获取用户正在查看的当前标签的标题?
以下是扩展程序中所有文件的链接:https://drive.google.com/file/d/1L7vho9iSL9nX2LKBmCveJvODmKQBlqX9/view?usp=sharing
答案 0 :(得分:4)
https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/query
这是一个返回Promise的异步函数。
你必须先等待承诺的解决方案。尝试这样的事情:
browser.tabs.query({active: true, currentWindow: true})
.then(tabs => {
for (const tab of tabs) {
console.log(tab.title);
}
});
您的activeTab
变量不是活动标签,而是您需要等待解决方案的承诺。此外,当promise解析时,它会为您提供数组选项卡,而不是单个选项卡。