我知道使用以下内容将在我的 Google Chrome 扩展程序上加载带背景的文本,并将其 chop 为前四个字母。
chrome.browserAction.setBadgeBackgroundColor({ color: [255, 0, 0, 255] });
chrome.browserAction.setBadgeText ( { text: "loading" } );
但是我想做的是允许显示 js 脚本的字符串结果的部分显示 loading
。我已经在网络和 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 字符串? - 如果是这样,最有效的方法是什么?
我知道这是一个相当长的文本 block ,但我尝试包含尽可能多的细节,以便您可以理解我正在尝试做什么,并希望解释一种更好的方法来完成我正在做的事情,即使它是实际上是可能的。
编辑
我已经删除了我的进度以避免混淆,现在问题已解决。如果您想查看我尝试过的内容,请单击此处 -> http://jsfiddle.net/lukexf/5d72Q/或阅读下面的解决方案
最佳答案
当然,您可以在 .setBadgeText
中显示 Javascript 字符串,事实上,这是您可以在那里显示的唯一内容:-)
所以,我试图理解你的问题的诀窍......我认为你想以某种方式调用 number.js,然后检索输出(document.write的部分
写入屏幕)。
但这将是错误的方法。
为什么不直接在background.js中实现以下代码(您可以在其中轻松访问badgeText)?
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) {
chrome.browserAction.setBadgeText ( { text: data.players.online.toString() } );
} else {
chrome.browserAction.setBadgeText( { text: "Fail" });
}
}
}
xhr.send();
关于javascript - chrome.browserAction.setBadgeText 可以从脚本加载字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23869539/