gpt4 book ai didi

javascript - 单击扩展按钮时自动执行 Javascript

转载 作者:行者123 更新时间:2023-11-28 10:50:56 25 4
gpt4 key购买 nike

我正在开发一个 Chrome 扩展程序,用于获取包含视频游戏中 map 旋转数据的在线 JSON。 map 每 4 小时轮换一次,因此本地图发生变化时,主机端的 JSON 也会更新。

问题是,(假设 map /JSON 在下午 3 点更新)当我在下午 3 点之后单击扩展程序的按钮时,扩展程序会加载之前轮换的 JSON,而不是新的 JSON。我希望扩展程序能够在用户每次单击按钮扩展程序时更新 JSON 和 DOM。这是我的代码:

list .json

{
"manifest_version": 2,
"name": "Splat Rotations",
"description": "Fetch the current and upcoming Splatoon rotations without SplatNet log in",
"version": "1.0",

"icons": {
"16": "images/icon16.png",
"19": "images/icon19.png",
"32": "images/icon32.png",
"38": "images/icon38.png",
"48": "images/icon48.png",
"128": "images/icon128.png"
},

"browser_action": {
"default_title": "Splat Rotations",
"default_icon": {
"16": "images/icon16.png",
"19": "images/icon19.png",
"32": "images/icon32.png",
"38": "images/icon38.png",
"48": "images/icon48.png",
"128": "images/icon128.png"
},
"default_popup": "popup.html"
},

"permissions": [
"https://splatoon.ink/"
]
}

popup.html

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Splat Rotations</title>
<link rel="stylesheet" href="popup.css">
</head>
<body>
<div id="rotations"></div>
<footer></footer>
<script src="popup.js"></script>
</body>
</html>

popup.js

// Get Splatoon map rotations using the Splatoon.ink API

function retrieveRotations() {

// Retrieve JSON file
var AJAX_req = new XMLHttpRequest();
AJAX_req.open("GET", 'https://splatoon.ink/schedule.json', true);
AJAX_req.setRequestHeader("Content-type", "application/json");

AJAX_req.onreadystatechange = function() {

// Check if splatoon.ink is up and running
if(AJAX_req.readyState == 4 && AJAX_req.status == 200) {

// Parse JSON
var json = JSON.parse(AJAX_req.responseText)
parseRotations(json);
}
}
AJAX_req.send(null);
}

// Parse acquired data

function parseRotations(data) {


////
//// This is just parsing the JSON and adding divs with the data to the DOM.
////
}

window.addEventListener('load', function() {
retrieveRotations();
}, false);

我可以添加一个按钮和一个单击事件监听器,但这需要用户执行两个操作(单击扩展按钮,然后单击另一个刷新按钮),但我真的不想这样做。

最佳答案

这可能是缓存问题,因此我使用 URL 参数将当前时间戳附加到 JSON,因此 JSON 永远不会相同。

var noCacheJSON = new Date().getTime();
AJAX_req.open("GET", 'https://url.json?c='+noCacheJSON, true);

终于可以正常工作了!

关于javascript - 单击扩展按钮时自动执行 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33523610/

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