gpt4 book ai didi

javascript - chrome.browserAction.setBadgeText 可以从脚本加载字符串吗?

转载 作者:行者123 更新时间:2023-11-28 13:32:33 26 4
gpt4 key购买 nike

我知道使用以下内容将在我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com