2

我需要从我的 Rails 4 应用程序中执行一个 javascript 函数。我用 ExecJS ( https://github.com/sstephenson/execjs )尝试了以下操作,但没有成功:

my_js_function = 'function my_function(a){var b=a.split("$");var c="";for(i=0;i<=b.length-1;i++){if(!(i%2)){c+=b[i]}}var b=c.split("");c="";for(i=0;i<=b.length-1;i++){if(i%2){c+=b[i]}}return c}'
compiled_function = ExecJS.compile(my_js_function)
result = compiled_function.call(my_argument)

原始的 JS 函数接受一个参数 (my_argument),我需要以某种方式将其传递给它。任何有关如何实现这一点的帮助将不胜感激!

4

1 回答 1

3

你很亲密。你不应该使用call,你应该eval这样使用:

my_js_function = 'function my_function(a){var b=a.split("$");var c="";for(i=0;i<=b.length-1;i++){if(!(i%2)){c+=b[i]}}var b=c.split("");c="";for(i=0;i<=b.length-1;i++){if(i%2){c+=b[i]}}return c}'
compiled_function = ExecJS.compile(my_js_function)
compiled_function.eval('my_function("heyhey")')
#=> ehy
于 2014-01-16T11:01:30.180 回答