如何从我正在撰写的谷歌浏览器扩展内容脚本中获取互联网上的当前时间(日期)?请不要使用JQuery!我从未处理过http请求(或任何服务器请求),所以请包含详细的代码! 谢谢!
答案 0 :(得分:2)
考虑到从当前网页发送请求时存在SOP限制,我建议您在后台页面中发送ajax调用,然后使用Message Passing将数据传输到内容脚本。您可以查看Cross-Origin XMLHttpRequest了解详情。
的manifest.json
{
"name": "36716999",
"version": "0.1",
"manifest_version": 2,
"content_scripts": [
{
"js": [
"content.js"
],
"matches": [
"<all_urls>"
]
}
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"permissions": [
"http://www.timeapi.org/utc/now"
]
}
content.js
chrome.runtime.sendMessage({ query: "currentTime" }, function (response) {
console.log(response.currentTime);
});
background.js
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
if (request.query === "currentTime") {
var xhr = new XMLHttpRequest();
xhr.onload = function () {
sendResponse({currentTime: xhr.responseText});
};
xhr.open("GET", "http://www.timeapi.org/utc/now");
xhr.send();
return true;
}
});
您可以对http://www.timeapi.org/utc/now
进行ajax调用以获取互联网时间,考虑到您不想处理jQuery,这是非常简单的进行ajax调用,您可以使用本机实现,{{ 3}}
的manifest.json
{
"name": "36715494",
"version": "0.1",
"manifest_version": 2,
"content_scripts": [
{
"js": [
"content.js"
],
"matches": [
"<all_urls>"
]
}
],
"permissions": [
"https://www.timeapi.org/utc/now",
"http://www.timeapi.org/utc/now"
]
}
content.js
var xhr = new XMLHttpRequest();
xhr.onload = function() {
console.log(xhr.responseText);
};
xhr.open("GET","https://www.timeapi.org/utc/now");
xhr.send();