【发布时间】:2018-01-08 00:29:49
【问题描述】:
我需要一些帮助来弄清楚为什么这不起作用。
我要做的是使用“eval()”评估用户输入的 JS 语法,并在 JS 代码中有错误时向用户发出警报。
当用户单击“Evaluate”按钮时,JQuery 事件被触发并向用户发出警报,但问题是当他们再次单击“Evaluate”时没有错误。
HTML:
<label>Example Editor (Ace editor actually used)</label>
<textarea id="editor" rows="5" class="form-control"></textarea>
<button id="evaluate" class="btn btn-success">Evaluate JS</button>
<button id="set_valid" class="btn btn-warning">Set Valid JS</button>
<button id="set_invalid" class="btn btn-danger">Set Invalid JS</button>
JS:
$(function () {
var editor = $("#editor");
$("#evaluate").on("click", function () {
//Evaluate JS
try {
eval(editor.val());
} catch (e) {
alert("There is an error in your JS syntax.");
alert("Click Evaluate JS button again.. does not catch error");
}
});
//Just to set valid js value
$("#set_valid").on("click", function () {
editor.val("$(function(){ \ralert('Valid JS Evaluated.');\r});");
});
//Just to set invalid js value
$("#set_invalid").on("click", function () {
editor.val("$(function(){\r undeclaredVariable \r\r\r});");
});
});
我这里设置了一个fiddle来更详细的解释:
https://jsfiddle.net/4vg3d9ka/2/
希望有人可以向我解释一下:-)
PS:对于 eval 安全问题,这并不重要,因为它是我正在构建的 NW.js 桌面应用程序..
谢谢 卡尔
【问题讨论】:
-
适用于我的 Chrome for Linux。无效的 JS 总是咳嗽,但是如果我更改为有效,它仍然会进入 catch 块...
标签: javascript jquery html try-catch eval