avatarGithub

window.postMessage接口里的message参数

2016-04-20

最近刚好在做一些iframe方面的东西,就使用了下postMessage这个API,结果遇到个奇怪的错误。

原因是message参数所使用的序列化的算法(结构化克隆算法)对于message的内容与结构有一定的限制。

  1. ErrorFunction对象无法被该算法复制,如果message中包含这样的对象,将会抛一个DATA_CLONE_ERR异常
  2. message中如果包含DOM节点,同样会抛一个DATA_CLONE_ERR异常
  3. 某些对象的属性不会被复制
    1. RegExp对象的lastIndex属性不会被复制
    2. 属性描述符,setters以及getters同样不会被复制,所以如果一个对象通过属性描述符设置为只读的,在复制后将变为可读可写
    3. 对象的原型链也不会被复制

source