我有一个非常简单的 Chrome 扩展程序,它有一个带有单个按钮的弹出窗口。tabs.create
当您单击按钮时,它会创建一个新选项卡,然后在回调函数中更改标记文本。当我调试它(打开检查器窗口)时,它每次都有效。但是,当我正常使用它时(没有检查器),它只是有时有效,通常不是第一次或两次。具体来说,并不总是有效的部分是徽章文本部分。总是会创建一个新选项卡,但徽章文本很麻烦。
跟时间有关系吗?这些异步函数已经让我头疼了很多次。不用说,我希望它每次都能工作,而不仅仅是有时。
这是我的代码的一个非常简单的版本,用于说明我遇到的基本问题:
清单.json
{
"name": "Test",
"version": "1.0",
"manifest_version": 2,
"browser_action": {
"default_icon": {
"19": "images/icon19.png"
},
"default_popup": "popup.html"
},
"permissions": [
"tabs"
],
"background": {
"scripts": ["background.js"]
}
}
popup.html
<script src="background.js"></script>
<html>
<body>
<button id="start">Start</button>
</body>
</html>
背景.js
document.addEventListener('DOMContentLoaded', function () {
var startButton = document.getElementById('start');
startButton.addEventListener('click', function () {
start();
});
});
function start()
{
// Make new tab
chrome.tabs.create({ url: "http://google.com" }, function(tab){
// Get random number to display in badge to test if it's working
var randomString = String(Math.floor(Math.random()*1000));
// Display badge
chrome.browserAction.setBadgeText({ text: randomString});
});
}