您的位置:首页 > Web前端 > JavaScript

关于javascript两个小问题总结

2011-03-01 10:22 302 查看
1.javascript跨域

有一个需求:一个页面需要嵌入(iframe)另一个页面,而两个页面不在同一个域中,父页面想通过javascript调用访问子页面的javascript或者DOM。就存在了跨域安全性的问题。javascript本身是不支持跨域的,因为会产生很多安全隐患。

在网上可以搜到很多变相实现跨域的方式,如:

单向跨域:JSONP,Access Control,window.name,server proxy

双向跨域:document.domain,FIM – Fragment Identitier Messaging,Flash LocalConnection,window.postMessage,Cross Frame

跨域的方法很多,不同的应用场景我们都可以找到一个最合适的解决方案。比如单向的数据请求,我们应该优先选择JSONP或者window.name,双向通信我们采取Cross Frame,在未与数据提供方没有达成通信协议的情况下我们也可以用server proxy的方式来抓取数据。

试过很多方法,都存在各式各样的一些问题,而且本人觉得不要去欺骗浏览器实现跨域,会造成系统不稳定,就算现在没有任何问题,可以正常工作,但当IE补丁打上,系统不可避免出现问题。

2.javascript与java的通信乱码

场景:javascript中通过ajax访问java后台,java后台返回一个字符串,这个字符串包含有":"、","、中文字符。ajax回调函数中接受到此返回值,会出现乱码。

解决方法:java后台用URLEncoder.encode(str, "UTF-8")进行加密,javascript中用decodeURIComponent(data)进行解密。

之前javascript端用过decodeURI(data)进行解密,不过发现冒号":"和逗号","没有解密成功,仍是''%3A''和"%2C",原因是:





所以这里只能用decodeURIComponent(data)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: