【发布时间】:2014-07-15 04:37:37
【问题描述】:
我知道使用以下内容会在我的 Google Chrome 扩展程序上加载带有背景的文本,并且会将其截断为前四个字母。
chrome.browserAction.setBadgeBackgroundColor({ color: [255, 0, 0, 255] });
chrome.browserAction.setBadgeText ( { text: "loading" } );
但我想要做的是允许部分如果它说loading 显示来自 js 脚本的字符串结果。我已经在网上和 StackOverflow 上查看了答案,但我还没有找到任何与我正在尝试做的事情相关的东西,所以我决定在这里问这个问题。
我的 manifest.json 有背景,js 加载:
"background": {
"scripts":["background.js"]
}
background.js -然后在background.js 中,我一直在尝试通过从number.js 加载结果来使其工作,但我就是无法让它工作。曾经。我知道这里的代码是错误的,因为我把它搞砸了,但我会把它包括在内,这样你就可以了解我想要做什么:
var imported = document.createElement('script');
imported.src = 'number.js';
document.head.appendChild(imported);
chrome.browserAction.setBadgeBackgroundColor({ color: [255, 0, 0, 255] });
chrome.browserAction.setBadgeText ( { text: "loading" } );
chrome.tabs.executeScript(null,
{code:"globalVarName = {'scriptOptions': {...}};" },
chrome.tabs.executeScript(null, {file: "number.js"},
number.js - 然后我最终要加载的是来自number.js 的字符串:
var ip = "chromahills.net";
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://minecraft-api.com/v1/get/?server=" + ip, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
data = JSON.parse(xhr.responseText);
if (data.status) {
document.write(data.players.online);
} else {
document.write("Fail");
}
}
}
xhr.send();
问题
所以,直截了当,我的问题如下:
- 是否可以在
.setBadgeText中包含javascript 字符串? - 如果是这样,最有效的方法是什么?
我知道这是一段很长的文字,但我尝试包含尽可能多的细节,以便您了解我正在尝试做的事情,并希望能解释一种更好的方法来做我正在做的事情,即使它是实际上是可能的。
编辑
现在问题已解决,我已删除我的进度以避免混淆。如果您想查看我尝试过的内容,请单击此处 -> http://jsfiddle.net/lukexf/5d72Q/ 或阅读以下解决方案
【问题讨论】:
-
document.write在 background.js 中肯定是错误的......但是如果您的最后一个代码段有效,那么我下面答案的代码段也将有效。当然,您必须确保我的代码段包含在一个函数中,并且您在正确的时间调用该函数 -
当你说
it fails to work...你在调试控制台中得到了什么? -
@devnull69 puu.sh/93fTu.png 这是我的代码。我已经在 JS 的其他地方进行了测试(不使用镀铬部件),它工作正常。
chrome.browserAction.setBadgeText ( { text: data.players.online } );simple 没有出现在图标上。chrome.browserAction.setBadgeText ( { text: "test" } );显然会返回测试和背景。即使文本无法加载,背景也会加载。调试控制台也没有错误。 -
请将
console.log(data.players.online)添加到代码的if部分,并准确告诉我们输出是什么 -
jsfiddle.net/lukexf/B78B9 我试着把它放进去,但我不确定它应该放在哪里,因为它没有记录任何东西。所以我把项目的一部分放在了 jsfiddle 上。如果你能指出它会去哪里,那真的会对我有帮助。非常感谢您到目前为止的帮助:)
标签: javascript jquery google-chrome google-chrome-extension google-chrome-devtools