分类目录归档:Javascript

谈谈浏览器 iframe 跨域 的沙盒模式

众所周知,现代的浏览器通过iframe调用不同域下的页面,会触发沙盒模式,比如: a.com/a.html iframe内框 b.com/b.html,b.com/b.html 的内页无法通过js操作 a.com/a.html。这样做可以 防止跨域攻击,使网络访问更安全。如果更复杂的模式,比如 a.com/a.html iframe内框 b.com/b.html,b.com/b.html iframe内框 a.com/c.html,这时 a.com/c.html 可以访问 a.com/a.html吗?估计这个大部分人就都不知道了,做一个简单的实验:
1、http://www.dezaoju.com/sanbox/ 内嵌 http://www.shuodahua.com/sanbox/
2、http://www.shuodahua.com/sanbox/ 内嵌 http://www.dezaoju.com/sanbox/frame.html
经过测试,无论内嵌多少层,只要是同域的 页面,测试 IE、Chrome、Firefox 都不会触发 sanbox
继续阅读

浅谈 JS 复制

最近帮朋友做了个简单的小程序,需要点击按钮实现复制?用户名的功能,使用? window.clipboardData?实现了?IE?下的复制功能,遇到?Chrome?就没办法了。百度发现了?Zepto.js,非常好用。

周末闲来无事,发现Chrome/Firefox?支持?Window.getSelection,做了简单的封装,替换掉?Zepto.js,有简化掉了很多代码。

代码比较简单,测试地址:http://www.okfdzs844.icu/products/copy.html,代码如下: 继续阅读

FrameController.js – 优雅的处理单页多框架(iframe)窗口管理同步问题

做后台时,不可避免的会遇到 内嵌 iframe 的情况。最近的 一个项目 有客户反馈无法保存,提示 token 错误,。经过沟通发现 是因为打开了 多个内嵌页(iframe),会出现此问题(使用ThinkPHP5自带方法 token(),每次调用都会生成新的Token)。修复方法也很简单,直接在 新增内嵌页时,将新生成的token进行广播。

这种情况在 后台 开发中会经常遇到,把 代码 提取出来,做了一下简单的封装,做成开源项目(https://gitee.com/mqycn/FrameController.js)。

考虑到后台可能要兼容非常老的平台,特别针对 IE7、IE8 做了兼容处理,基本可以实现所有浏览器的兼容。运行效果如下: 继续阅读

一个脚本学会 Promise

感觉之前 对 Promise 理解错误(见之前 2016年的文章:http://www.okfdzs844.icu/p/promise),今天周末,抽时间看了 Promise 的文档,确实时理解差太多了。

粗略的看了一个文档,简单的了解了 Promise使用。对于 react-native 中的 API 项目,非常适用( 其实fetch就是一个 Promise实例)。

用 Promise 定义好接口,调用时 最好能统一处理错误,规范为 设计好的数据格式。 文档中 没有 catch 后,能否返回 then的方法。测试结果不能,因为 调用 catch 后,已经时resolved了。如果 catch 继续返回一个 新的 Promise,按 定义的 数据格式,返回一个错误的json, 无视错误,继续操作就完美了。尝试写了一个脚本,实现了我的想法。脚本如下: 继续阅读

原创的jQuery插件:jQueryValidateQY(基本功能已经完成)

最近的项目(手机站),需要实现个前端校验功能,比如大名鼎鼎的 jQuery.validate 插件,太过基础,不能满足现在的需求。另外一点就是 想前后端共用校验规则。

尝试自己写了一个,基于 jQuery,实现了:

1、无论成功或者失败,输入框自动变色(失败为红色,成功为绿色)
2、如果输入出错,自动弹出错误提示层
3、错误、正确的样式,可以通 继续阅读