【发布时间】:2017-05-13 01:16:20
【问题描述】:
我正在为游戏编写浏览器内代码编辑器。编辑器将允许用户编写自己的 JavaScript 文件,然后将其加载到运行编辑器的同一个 DOM 中。这将允许他们在代码旁边的画布元素中查看游戏,并在每次保存时更新它。
编辑器是针对刚接触JavaSript的人,很容易不小心陷入死循环。如果可能的话,我想设置我的编辑器,这样如果循环执行太多次或太快,循环就会中断并弹出一条消息,提醒用户他们有一个无限循环。
这对于新人来说是理想的,因为如果整个编辑器突然崩溃,他们可能没有意识到自己的错误是什么,并认为这是我的编辑器的问题。
如何在我的编辑器中实现自动停止无限循环的故障保护?
【问题讨论】:
-
@user2182349 编辑器将允许用户编写自己的 javascript 文件,然后将其加载到运行编辑器的同一个 DOM 中。这将允许他们在代码旁边的画布元素中查看游戏,并在每次保存时更新它。
-
Here's what CodePen does 停止无限循环。它预编译 JavaScript 以在所有循环和函数中插入监控函数。
-
@4castle 太完美了,这正是我想要的。非常感谢。这是我在这里的第一个问题,所以我不能 100% 确定它是如何工作的,但是如果您将此作为答案添加,我会将其标记为已解决!谢谢!
-
您不必将代码放在同一个 DOM 中。事实上,我不建议这样做,因为您会与名称等发生冲突。如果用户键入
window.document = null,您的编辑器将停止工作。使用 blob 非常容易。someIFrame.src = URL.createObjectURL(new Blob([html], {type: 'text/html'})); -
@4castle,发表您的评论作为答案并链接到该文章很好。它也可能对寻找答案的其他人更有帮助。
标签: javascript editor infinite-loop