应用场景如下:
页面中有多个输入框,用户可以给每个输入框自定义一个编码,例如#1,#2,另有一个让用户自定义输入代码的dialog,用户可以在里面输入js代码,以来控制几个输入框之间值的计算,或是控制当#1输入框的值不为空时,#2输入框变成disabled状态。想请问各位大佬以上场景能否实现?
应用场景如下:
页面中有多个输入框,用户可以给每个输入框自定义一个编码,例如#1,#2,另有一个让用户自定义输入代码的dialog,用户可以在里面输入js代码,以来控制几个输入框之间值的计算,或是控制当#1输入框的值不为空时,#2输入框变成disabled状态。想请问各位大佬以上场景能否实现?
先考虑一个问题,输入框里运行输入的语句语法范围有哪些。总不会允许用户注册自己的Service Worker将所有数据包都转发吧?
实现还是比较容易的,无非就是编译原理。
如果在考虑了安全性之后,确实需要允许所有的语法,那么使用ES的解释库是一个简单的方法,比较流行的有acornjs
;
如果能将语法范围控制在很小的范围,可以自己写一个,没必要加载那么大的库了。看你的需求描述只需要实现以下几个节点分析就行了:
BinaryExpression
ExpressionStatement
Identifier
IfStatement
Literal
MemberExpression
自己实现的好处是没必要分开实现Tokenization
和Parsing
,可以简化处理。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.5k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
标题描述的太奇怪了,看意思是要用户自定义算法
最简单的可以使用Mathjs,其中自带表达式功能
比如输入
A * ( B + 3 )
,输入框输入数据做一下过滤,然后AB占位符替换成其中的值,可以最大程度避免出现XSS,实现也比较容易。其他交互的控制就很简单了。