javascript - gwt jsni变量名混淆

标签 javascript gwt eval jsni

我在尝试将 javascript eval() 与 gwt 一起使用时遇到问题。

基本上,我的数据库中有一个动态字符串,例如:

"'31.07.'  + (myVar.getMonth() <= 7 ? myVar.getFullYear() + 3: myVar.getFullYear() + 4 )"

myVar 应该是日期类型的 JavaScript 变量。

该变量通过 GWT JSNI 传递:

private native String eval(Date dateFieldValue, String scriptlet) /*-{
  var myVar = dateFieldValue;
  return $wnd.eval(scriptlet);
}-*/; 

但是未找到 scriptlet 字符串中的“myVar”变量。 我找到了这个: https://support.google.com/code/answer/55205?hl=en

这解释了为什么会发生这种情况。 我必须以这种方式分离我的脚本:

"'31.07.'  + (" + myVar + ".getMonth() <= 7 ? " + myVar + ".getFullYear() + 3: " + myVar + ".getFullYear() + 4 )"

问题是这不灵活,因为脚本是在数据库中管理的,而不是在代码中管理的。那么这种情况下该怎么办呢?这不可能吗?

最佳答案

使用函数代替:

return (new Function('myVar', 'return ' + scriptlet))(dateFieldValue);

这在安全性方面仍然和 eval 一样糟糕,但无论如何都干净得多。

关于javascript - gwt jsni变量名混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37280792/

相关文章:

javascript - 使用 Javascript 获取宽度

java - 这些 XSRF 保护也适用于 RequestFactory 吗?

python - 字符串到数值数组

Javascript eval() 不适用于传递的字符串

javascript - 如何防止safari弹出密​​码保存框?

javascript - 如何制作一个我可以包含在我的 backbone.js 项目中的配置文件

java - GWT 编译器在 IntelliJ IDEA 中找不到依赖模块的来源

javascript - 可以将 GWT 与基于 javascript 的框架进行比较吗?

javascript - 在 Firefox 中使用 eval 方法从字符串中获取类

javascript - 为什么 Flask 无法下载文件?