代码之家  ›  专栏  ›  技术社区  ›  D.B

运行存储在字符串变量中的Javascript函数

  •  1
  • D.B  · 技术社区  · 7 年前

    下面的函数来自一个ajax调用,它存储在一个字符串变量中。

    obj.action="DisplayActivity('modalDisplay', 0, 4);"
    

    我正在尝试运行它,但没有成功。我试过:

    eval(obj.action);
    

    以及:

    窗口[对象动作]

    有什么想法吗?谢谢

    2 回复  |  直到 7 年前
        1
  •  2
  •   NVRM    7 年前

    尝试使用 New Function :

    let s = "console.log('Hello '+a)",
    call = new Function('a', s)
    
    call('world!')

    一定要避免从GET/POST中调用内容,否则会导致 typical xss ,允许通过特制的链接更改DOM。

        2
  •  1
  •   Nikita Malyschkin    7 年前

    我想这是一个范围问题。

    尝试:

    eval("global.tmp = function(DisplayActivity){" + obj.action + "};");
    global.tmp(DisplayActivity);