20160513 午夜俱乐部

2016-05-12 23:59:10 +08:00
 Gua
(^。^)y-~~。o0 睡觉中~~~
1941 次点击
所在节点    天黑以后
8 条回复
Kilerd
2016-05-13 00:38:44 +08:00
ai 居然失效了?不可思议啊 @icedx
icedx
2016-05-13 00:58:07 +08:00
@Kilerd 我在写代码...
ccloli
2016-05-13 01:10:55 +08:00
成功借助 CSS 实现了跨域取数据,好高兴 _(:3
archer2ee
2016-05-13 01:17:56 +08:00
@ccloli 好奇 css 如何跨域的?
ccloli
2016-05-13 01:25:18 +08:00
其实就是像 JSONP 那样把需要的文本用 CSS 的 content 属性包起来,然后用 getComputedStyle 方法读元素的 content 属性 http://ccloli.com/201605/get-cross-origin-data-with-css/

其实最后还是靠文中提到的那个 csst ( https://github.com/zswang/csst )的启发才发现可以这么玩的,之前琢磨 link DOM 的 sheet 属性并没有什么卵用
Kilerd
2016-05-13 08:29:57 +08:00
@ccloli 打不开博客,不过看起来好像挺有意思的
DIYgod
2016-05-13 08:32:55 +08:00
@ccloli 赞赞赞,学习了
ccloli
2016-05-13 08:49:48 +08:00
@Kilerd 站点用了 CloudFlare ,所以国内可能访问有些问题。 http://r6.loli.io/bYjq6f.png

JavaScript 实现部分是这一段:
var link = document.createElement('link');
link.setAttribute('rel', 'stylesheet');
link.setAttribute('type', 'text/css');
link.setAttribute('href', 'http://ccloli.com/test/cross-origin-test.css?_=6');
link.addEventListener('load', function(event){
var div = document.createElement('div');
div.setAttribute('id', 'test');
document.body.appendChild(div);
console.log(getComputedStyle(div, '::before').content);
document.body.removeChild(div);
});
document.head.appendChild(link);

这是 CSS 的源码:
#test::before {
content: '{"data": [{"foo": "foo", "bar": "bar"}, {"foo": "bar", "bar": "foo"}], "status": 1, "message": "success"}';
}

控制台输出:
'"{\"data\": [{\"foo\": \"foo\", \"bar\": \"bar\"}, {\"foo\": \"bar\", \"bar\": \"foo\"}], \"status\": 1, \"message\": \"success\"}"'

目前发现 Chrome 和 Firefox 下 str.substr(1, str.length - 2) 就能 JSON.parse(),多余的反斜杠对解析没影响。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/278314

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX