Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 刷新darksky JSON Chrome扩展_Javascript_Jquery_Json_Google Chrome Extension - Fatal编程技术网

Javascript 刷新darksky JSON Chrome扩展

Javascript 刷新darksky JSON Chrome扩展,javascript,jquery,json,google-chrome-extension,Javascript,Jquery,Json,Google Chrome Extension,我正在尝试构建一个供私人使用的小Chrome扩展,它(目前)使用darksky API显示某些位置的当前天气数据。 这个想法是,一旦你点击图标,天气数据就会出现在chrome扩展弹出窗口中。 我的代码如下: popup.html: <head> <style type="text/css"> body { height: 300px; width: 600px; } </style> &

我正在尝试构建一个供私人使用的小Chrome扩展,它(目前)使用darksky API显示某些位置的当前天气数据。 这个想法是,一旦你点击图标,天气数据就会出现在chrome扩展弹出窗口中。 我的代码如下:

popup.html:

<head>

    <style type="text/css">
    body {
       height: 300px;
       width: 600px;
    }
</style>

         <title>Good Morning!</title>
         <script src="static/jquery.js"></script>
         <script src="static/scripts.js"></script>
</head>

身体{
高度:300px;
宽度:600px;
}
早上好
scripts.js:

$.getJSON(
    "https://api.darksky.net/forecast/[API KEY]/52.075,-0.7333?exclude=minutely,daily,alerts,flags,hourly,daily&units=si",
    {},
    function(data) {


        document.getElementById("Walthamstow").innerHTML =
'Time: ' + JSON.stringify(data.currently.time)+ "<br>" +
'Summary: ' + JSON.stringify(data.currently.summary)+"<br>" +
'Temperature: '+ JSON.stringify(data.currently.temperature)+' \xB0'+'C'
    }
);
$.getJSON(
"https://api.darksky.net/forecast/[API KEY]/52.075,-0.7333?排除=分钟、每日、警报、标志、每小时、每日和单位=si”,
{},
功能(数据){
document.getElementById(“Walthamstow”).innerHTML=
'Time:'+JSON.stringify(data.current.Time)+“
”+ '摘要:'+JSON.stringify(data.current.Summary)+“
”+ 'Temperature:'+JSON.stringify(data.current.Temperature)+'\xB0'+'C' } );

遗憾的是,数据没有刷新。至少时间戳应该几乎每秒刷新一次。但无论我多久单击一次图标,它都会显示相同的数据。但是,如果我在一个单独的选项卡中运行darksky请求URL,它也会更新弹出窗口中的数据

弹出窗口有自己的文档,因此如果您想更新当前打开的页面,您需要一个内容脚本,也可以在弹出窗口中使用chrome.tabs.executeScript运行该脚本。谢谢您提供的信息。我认为每次我重新打开弹出窗口时(通过单击图标),它都会重新创建(并运行所有相关脚本)。我想不是这样吧?您知道是否有一个脚本只是说“当弹出窗口打开时,重新运行所有脚本?”当您打开弹出窗口时,脚本每次都会运行。当弹出窗口未显示时,不会保留其内容的内存。一种可能是浏览器正在缓存请求的响应数据。这将导致每次打开弹出窗口时显示的内容相同。使用一种标准方法来阻止浏览器缓存(例如,在URL的查询部分的假/未使用的参数中添加一个递增的数字,该参数会随着每个请求的变化而变化)。使用不受信任的数据(例如,从外部源获得的数据)作为使用
.innerHTML
更改内容的一部分是不好的做法。您应该创建HTML结构并使用
.textContent
进行更改。既然您已经加载了jQuery,那就是
.text()
。非常感谢您提供的信息和反馈。我将尽力解决这两个问题:)