问题描述
我正在尝试使用一个脚本来抓取网页,然后使用请求承诺来解析RSS Feed。据我了解,请求承诺必须在服务器端运行,所以我在html中从外部调用脚本。我一直在使用localStorage.setItem和localStorage.getItem在外部脚本和另一个嵌入式脚本之间传递变量,该脚本将变量分配给应在整个页面中以文本形式显示的html元素。
在Chrome中,页面首次加载时为空白,但刷新一次后即可正常运行。在Firefox和Safari中,无论刷新多少次,它都保持空白。问题似乎是html无法从localStorage.getItem中“接收”变量。我怀疑这与不同浏览器处理请求承诺功能的方式有关,但是我很困惑。我在做什么错了?
这是请求承诺脚本:
var xmltext
var latlonquery,latquery,lonquery,url
const rp = require('request-promise')
const options = {
headers: {'user-agent': 'node.js'}
}
function doQuery() {
latlonquery = new URLSearchParams(window.location.search)
latquery = latlonquery.get("lat")
lonquery = latlonquery.get("lon")
url = "https://forecast.weather.gov/MapClick.PHP?lat=" + latquery + "&lon=" + lonquery + "&FcstType=digitalDWML"
}
function doRequest() {
return rp(url,options).then(function(html){
return html
})
}
doQuery()
doRequest().then(function(html){
xmltext = html
localStorage.setItem("xml_says_this",xmltext)
localStorage.setItem("lat_says_this",latquery)
localStorage.setItem("lon_says_this",lonquery)
})
您可以在操作here中看到问题的示例。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)