CSST(CSS Text Transformation)_html/css_WEB
一.CSST是什么CSST的近义词是JSONP,而不是SASS、PostCSS之类的东西。也就是说,JSONP能做的,(CSS3环境下)用CSST也可以做到 Ajax不能跨域,而JSONP算是Ajax的跨域补丁(当然,还有其它跨域方法,但JSONP是应用最广泛的) CSST最大的限制是 只适用于支持CSS3的环境,但我们用不用它这不重要,思路与原理比较有意思 二.实现原理1.客户端(浏览器JS)
2.服务端(node/PHP…)
服务端只做这一件事,客户端收到响应后,取出span的 content内容,文本传输完成 3.细节问题(技术手段)
三.优缺点优点:如果接口被攻陷的话,后果比JSONP小一点(link标签比script标签安全些,后者注入代码能直接执行,前者只影响样式) P.S.如果接口都被攻陷了,这样一点防御措施兴许还能起到什么关键性作用吗? 缺点:
所以, 不推荐使用CSST,JSONP明显更方便实用,本文只是想说这种思路与原理值得了解 如果非要用的话,也应该考虑一下不支持/部分支持CSS3的UA的感受,需要完善特征检测( 原项目暂时没有添上): var animation = false, animationstring = 'animation', keyframeprefix = '', domPrefixes = 'Webkit Moz O ms Khtml'.split(' '), pfx = '', elm = document.createElement('div');if( elm.style.animationName !== undefined ) { animation = true; } if( animation === false ) { for( var i = 0; i < domPrefixes.length; i++ ) { if( elm.style[ domPrefixes[i] + 'AnimationName' ] !== undefined ) { pfx = domPrefixes[ i ]; animationstring = pfx + 'Animation'; keyframeprefix = '-' + pfx.toLowerCase() + '-'; animation = true; break; } }} (以上代码摘自 Detecting CSS animation support – CSS | MDN) 更好的兼容性需要手动重构代码,算了,了解下就好 参考资料
|