前几天写了HTML5的俄罗斯方块,其实也不是想好好练一下HTML5,其实真正是想把HTML5的socket通信功能好好熟悉一下,当然喽,下一步也就是HTML5俄罗斯方块的网络对战版,敬请期待哦(网址)
今天尝试了一下html5的postMessage功能,一度出现了代码出错的问题,结合出现的错误,在这里给大家分享一下,以便大家遇到类似问题时不会抓耳挠腮~~
两个页面,index.html和inner.html,其中在index中使用iframe调用inner.html页面。最初写的代码如下(出错的代码)
index.html
1 2 3 4 5Communication 6 17 18 1920 2122 23 24
inner.html
1 2 3 4 5 15 16 17 18
将这两句代码放入本地的apache目录中,然后打开Chrome和firefox调试,结果bug~~~
Chrome和firefox的出错信息如下:
Chrome:Uncaught Error: SYNTAX_ERR: DOM Exception 12
firebug:SyntaxError: An invalid or illegal string was specified
最后,开始狂找google+百度,最后看人家的origin都是*,索性尝试一下也改成了*,结果真的OK了~~~
Communication
debug N久,就以为一个*啊????!!当时那个表情啊~~
后来尝试了一下,发现localhost作为origin是不行的,需要使用http://localhost(写origin时一定要加上http,本例也是一样的)。
总结一下原因,就是postMessage的origin是http://localhost而不是localhost,如果使用了不正确的origin,注定会出错!!