前几天想写个抓取 bing 每日壁纸作为 chrome 新标签页背景的插件,可是 chrome 插件貌似只支持 js 。而 js 想跨域读取 json 的话,也必须有服务端的支持,比如这个:
JSONP(JSON with Padding)是一个非官方的协议,它允许在服务器端集成 Script tags 返回至客户端,通过 javascript callback 的形式实现跨域访问
想读取的 json 地址:http://cn.bing.com/HPImageArchive.aspx?forma=js&idx=1&n=1&nc=1443074799572&pid=hp&video=1
chrome 应用商店已经有插件实现了类似功能, yahoo 的 FlikrTab ,不知道它这个是怎么实现的,难道在 yahoo 服务器上有对应的代码传递数据给 js ?求大牛解释一下
1
learnshare 2015-10-15 10:12:05 +08:00
不对, Chrome 插件允许跨域加载文件
https://developer.chrome.com/extensions/xhr#requesting-permission |
2
xuxu 2015-10-15 10:12:56 +08:00
当成 text 读过来 parse 一下就行了。
|
3
MrZephyrus OP @learnshare 真的有,感谢了,去试一下
|
4
MrZephyrus OP @xuxu 应该还是得用 XMLHttpRequest()吧?
|
5
xuxu 2015-10-15 10:33:23 +08:00
@MrZephyrus 1 楼给的就是一样的意思,里面有提到不要用 eval 来解析,避免出现恶意代码。
|
6
MrZephyrus OP @xuxu thx
|
7
bertonzh 2015-10-15 11:05:11 +08:00
Chrome extension API 的 XMLHttpRequest 支持跨域,可能需要先在 manifest.json 里面添加一下内容权限。
|
8
MrZephyrus OP @bertonzh 行,谢谢
|
9
MrZephyrus OP @learnshare 我发现这样不行,这个 json 地址是不会做出任何响应的,那我 XMLHttpRequest()中的 onreadystatechange 就没有作用
|
10
MrZephyrus OP @learnshare 是不是只要这个静态页面响应就 ok 了?
|
11
learnshare 2015-10-15 15:59:27 +08:00
@MrZephyrus 我并没有实践过,没法回答你了
|
12
MrZephyrus OP @learnshare 好吧,谢谢了
|
13
hcymk2 2015-10-15 16:10:22 +08:00
|
14
MrZephyrus OP @hcymk2 赞
|