gpt4 book ai didi

javascript - 使用 AJAX 请求替换内部 .JSON 时代码行为发生变化

转载 作者:行者123 更新时间:2023-12-02 22:06:39 25 4
gpt4 key购买 nike

我已经用 AJAX 请求替换了我的内部 .JSON,现在我的代码停止正常工作。我的目标是编写一个 chrome 扩展,如果其链接包含保存在 .JSON 文件中的某些关键字,则该扩展会关闭选项卡。这是代码之前的样子:

chrome.webNavigation.onCompleted.addListener(closeTab, {
url: [
{urlPrefix: 'https://www.google.de/'},
{urlPrefix: 'https://sghm.eu/iserv/login'},
]
});

function closeTab(e) {
if (!e.frameId) {
chrome.tabs.remove(e.tabId);
}
}

这段代码对我有用。
现在是新的:

var obj = {};
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function(){
if(xhttp.readyState == 4 && xhttp.status == 200){
obj = JSON.parse(xhttp.response);
console.log(obj);
}};
xhttp.open('GET', "banned.json", true);
xhttp.send();


chrome.webNavigation.onCompleted.addListener(closeTab, obj);

function closeTab(e) {
if (!e.frameId) {
console.log("Hallo2");
chrome.tabs.remove(e.tabId);
}
}

以及banned.json文件:

[
"www.google.de",
"www.youtube.com/?gl=DE"
]

此代码现在会关闭每个选项卡,而不考虑链接或其他任何内容。但我不知道为什么。 AJAX 工作时,控制台成功显示了之前加载的 JSON 数组。

最佳答案

当您点击此行时,您确定 obj 不是仍然为空吗?:

chrome.webNavigation.onCompleted.addListener(closeTab, obj);

您可能会在 xhttp.readyState == 4 && xhttp.status == 200 计算为 true 之前到达那里(因为 onreadystatechange 回调函数异步运行)。

您是否尝试过将上面的行移到 onreadystatechange 回调函数中的 console.log(obj); 下面?

关于javascript - 使用 AJAX 请求替换内部 .JSON 时代码行为发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59693077/

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