关卡

关卡有双向和单向之分,单向的又有进入障碍和外出障碍之分。

为了防止外地入侵,设有进入障碍。

但,设下外出障碍,却以防止外地之名,这不对吧?

2013年读过的书

翻了下实体书和各 App,2013 年读过的书其实也不少了,下面列出的是说得上是读完了的(某些还是需要重复读慢慢思考才能看出更多的细节)。手上还有着不少读了一些的,这些得计划在 2014 年读完。

  1. HTML5和CSS3实例教程
  2. 打开餐巾纸 : 《餐巾纸的背面》之实用手册
  3. 程序员的数学
  4. 黑客与画家 : 硅谷创业之父Paul Graham文集
  5. 人人都有好工作 : IT行业求职面试必读
  6. 程序员的职业素养
  7. 程序员的思维修炼 : 开发认知潜能的九堂课
  8. Android开发入门与实战
  9. CSS设计指南 : CSS设计指南
  10. JavaScript高级程序设计(第3版)
  11. 编写可维护的JavaScript
  12. HTTP权威指南 : 权威指南
  13. 理解Unix进程
  14. CSS权威指南(第三版)
  15. CSS禅意花园 : Web视觉艺术设计的王者之书
  16. C语言程序设计 : 现代方法
  17. 上帝掷骰子吗 : 量子物理史话

postMessage

postMessage 被设计用来在窗口(window)间通信,特别地,用于跨域间的通信(可携带 cookie)。可支持在普通的页面、iframe / frame、用 open 打开的新窗口间使用。

使用的方法是:targetWindow.postMessage(message, targetOrigin),接收的事件是message

其中message不限定为字符串,targetOrigin是用来指定接收方的 Origin,不符合时浏览器禁掉该请求抛出异常,可以是 * ,但建议指定为具体的。

下面是一个单向通信的示例(A -> B)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// A domain
windowB.postMessage('just a message', 'http://bdomain');


// B domain
window.onmessage = function(e) {
    // for safety
    if (e.origin == 'http://bdomain') {
        // source origin
        alert(e.source);
        // message data
        alert(e.data);
    }
};

通过设置隐藏的跨域 iframe,然后通过该 iframe 可以实现跨域无刷新提交需求。

这里是一个 DEMO

References

  1. postMessage – MDN
  2. compability – Can I use