我实现了一个内置在网页中的 javascript 解析器。用户可以将 javascript 代码放在文本区域中,例如:
var i = 0;
i++;
var y = i * 10;
document.write(y);
被解析以生成一些输出(例如,document.write 流等)。
生成textarea更改事件时调用函数parse 。
function parse(text) {
try {
....
eval(text);
} catch (e) {
....
return {
status : false, output : ..., ... : ...
};
}
return {
status : true, output : ...., ... : ...
};
}
for(var i=0; i<10; )
一切正常,但是当用户在文本区域(例如, )中编写循环时我遇到问题,while(true)
因为应用程序进入循环。
为了避免这个问题,我会问大家一些关于这个问题的问题/解决方案:
- 是否有一些 javascript 库或函数允许
eval
使用 javascript 代码但没有循环? - 我可以要求在固定时间执行我的解析函数吗?在这段时间之后,我会生成一个停止 eval 函数的异常。
- 在调用之前,
eval(text)
我可以调用一个checkIfThereAreLoops
函数来分析文本,寻找类似for(var i=0; i<10; )
or的模式while(true)
。这是一个好的解决方案吗?我可以使用正则表达式来寻找这些模式吗?