仅执行作为字符串注入的部分代码

问题描述 投票:1回答:1

我正在使用Blockly,下面的代码通过字符串变量注入到文档中。字符串(代码)是自动生成的:

var cv; //global variable will execute since used inside onGreenFlagClicked

// will get execute
function helloWorld() {
  MinecraftAvatar.waveHelloForNSeconds(7)
}

function onGreenFlagClicked() {
  cv = helloWorld();
  MinecraftAvatar.sayForNSeconds("I am Mike", 7)

};

Players.walkForwardForNSeconds(7) // no execution
MinecraftAvatar.waveHelloForNSeconds(7) // no execution

在上面的字符串(代码)中,当脚本附加到DOM时,我想执行onGreenFlagClicked()。我的问题是我只想执行该代码的一部分,例如:变量,函数定义,而不是上面显示的其他内容。

我想禁用

Players.walkForwardForNSeconds(7) // no execution
MinecraftAvatar.waveHelloForNSeconds(7) // no execution

...将代码附加到DOM。

这有可能吗?

javascript reactjs algorithm performance dom
1个回答
2
投票

如果您不想执行以下操作:

Players.walkForwardForNSeconds(7) // no execution 
MinecraftAvatar.waveHelloForNSeconds(7) // no execution

...然后,您需要删除这些行。

不得不用代码来操作字符串不是很好,但是您可以例如删除最后一次出现}之后的所有代码,如下所示:

code = code.replace(/[^}]*$/, ""); 

或者,您可以删除所有以大写字母开头的行(不带空格):

code = code.replace(/^[A-Z].*/gm, ""); 

添加呼叫,您只需将其附加到代码:

code = code + "\nonGreenFlagClicked();";
© www.soinside.com 2019 - 2024. All rights reserved.