gpt4 book ai didi

Javascript,另一个 "too much recursion"问题 : Revenge of evil eval()

转载 作者:行者123 更新时间:2023-11-30 18:45:21 24 4
gpt4 key购买 nike

我正在为一个客户做一个项目(一个非常古老的项目)。

当我在 Firefox 中浏览项目的一个 JSP(在本例中为 4.0,但我想它也发生在 3.x 中)时,Firebug 控制台上出现以下错误:

Error: too much recursion
Archivo fuente: https://localhost:9443/ClientProjectWeb/js/Object.js
Línea: 226

这是该行的代码片段:

if(gControl){giveFocusToControl(gControl.name);}

这是被调用的函数:

function giveFocusToControl(nombreControl){
var forma = document.forms[0];
var campo = null;
if(forma){
var elemento = eval("forma."+nombreControl);
if(eval(elemento.length)){
if(elemento.type == "select-one" || elemento.type == "select-multiple"){
campo = elemento;
}else{
campo = elemento[0];
}
}else{
campo = elemento;
}

if(campo.style && campo.style.visibility){
if(campo.style.visibility != "hidden"){
campo.focus();
}
}else{
campo.focus();
}
}
}

我怀疑这与函数内的 eval() 调用有关,但尽管我已尝试用 this document 中提出的 [] 替代方案替换那些“邪恶”调用,例如:var elemento = forma[nombreControl];,我没有得到预期的结果,错误仍然存​​在:相同的行,相同的消息。

请问您有什么建议吗?提前致谢。

最佳答案

campo.focus() 是我开始调查的地方。我会在每个 campo.focus() 之前发出警报,并检查警报是否被多次调用。如果是这种情况,您将需要考虑调用 giveFocusToContol() 方法的位置。此方法中的 eval 调用并不是真正必要的。如果不玩代码,我会说第一个 eval 可以替换为 forma.controls[nombeControl]; 我肯定必须玩第二个调用以获得评估它的最佳方法。 if(eval(elemento.length)) 的目的基本上是一个测试,看看有问题的控件是否是一个列表。

关于Javascript,另一个 "too much recursion"问题 : Revenge of evil eval(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5639417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com