我正在研究HTML5游戏,作为其中一项功能,我希望更高级的用户能够在游戏中的对象中运行javascript编写短脚本。问题是,我想限制播放器脚本可以做什么,这样他们就无法打开新窗口,作弊,修改游戏的性质等等。但是,我会喜欢将某些方法暴露给脚本所以他们可以做出有用的东西。
有些人建议我可以和Web Workers一起做这件事。其他人告诉我,我需要在javascript中构建一个解释器来执行此操作。显然,我不能只使用eval,所以如果有“最佳”方式,我怎么能这样做以及最好的方法呢?
答案 0 :(得分:1)
您不需要创建沙箱,Javascript已经为您完成了。
如果您在页面中创建了iframe,那么该iframe将拥有与原始页面分开的javascript环境。然后你可以使用html5帧间通信来回发送消息。 iframe将运行用户定义的程序并将其答案发送回要评估的主机。你不应该相信从iframe返回的内容并丢弃任何超出范围的内容。