eval parent.location的JavaScript错误
我在经典ASP。我正在使用的代码(不是我的代码)是很久以前编写的,甚至可能早在Firefox和Chrome存在之前 总之,有以下JavaScript函数:eval parent.location的JavaScript错误,javascript,Javascript,我在经典ASP。我正在使用的代码(不是我的代码)是很久以前编写的,甚至可能早在Firefox和Chrome存在之前 总之,有以下JavaScript函数: function MM_jumpMenu(targ, selObj, restore) { eval(targ + ".location ='" + selObj.options[selObj.selectedIndex].getAttribute('value') + "'"); i
function MM_jumpMenu(targ, selObj, restore) {
eval(targ + ".location ='" + selObj.options[selObj.selectedIndex].getAttribute('value') + "'");
if (restore)
{
selObj.selectedIndex=0;
}
}
那个代码突然停止工作了,我正试图找出原因。在Chrome中,它给了我一个错误:
SyntaxError:意外的标识符
当我尝试运行代码时,传入的参数如下:
target=“父级”
所选selObj索引上的值=“编辑_details.asp?make=ML&n=&r=DA61CHH&c=Hope预拌混凝土有限公司-CHY-LCV's&cus=HOPEAG02&type=&inc=&id=&fw=&cusid=HOPE03”
恢复=0
假设代码是专为IE 6/7编写的,我们正在尝试标准化并使其适用于所有浏览器。您的url中有一个未替换的单引号
CHY LCV's&
请注意:
CHY LCV\'s&
但实际上,这段代码很糟糕,如果可以的话,你应该重写它。你的url中有一个未替换的单引号
CHY LCV's&
请注意:
CHY LCV\'s&
但实际上,这段代码很可怕,如果可以的话,你应该重写它。eval是邪恶的!!不要用它
window[targ].location = selObj.options[selObj.selectedIndex].getAttribute('value');
eval
是邪恶的!!不要用它
window[targ].location = selObj.options[selObj.selectedIndex].getAttribute('value');
“selObj选定索引上的值”:它有一个撇号。您需要对其进行转义。“selObj的选定索引上的值”:它有一个撇号。您需要避开它。我很确定,如果您记录您试图评估的字符串,这将是显而易见的。不要使用eval。我敢肯定,如果您记录要评估的字符串,这将是显而易见的。不要使用eval。这样不行,
targ
包含应更新的变量名称。也许window[target]=…
对。在这种情况下甚至不需要它。我收回这句话:-)这很有效!非常感谢。那次评估到底是为了什么!好吧,假设您不知道要使用的接线员。在这些情况下,eval还有其他选择,比如JQuery的globalEval。但在某些情况下,它也会在内部使用eval,AFAIK@Paddy:globalEval
与eval
相比并不安全。这是一样的。这不起作用,targ
包含应该更新的变量的名称。也许window[target]=…
对。在这种情况下甚至不需要它。我收回这句话:-)这很有效!非常感谢。那次评估到底是为了什么!好吧,假设您不知道要使用的接线员。在这些情况下,eval还有其他选择,比如JQuery的globalEval。但在某些情况下,它也会在内部使用eval,AFAIK@Paddy:globalEval
与eval
相比并不安全。都一样,很好!你能告诉我怎么做吗:)你能试试奥利奥的溶液吗。这以更好的方式解决了问题。否则,可以用相应的url编码(';)替换撇号。JS有一个转义函数,但在这种情况下不起作用。很好!你能告诉我怎么做吗:)你能试试奥利奥的溶液吗。这以更好的方式解决了问题。否则,可以用相应的url编码(';)替换撇号。JS有一个转义函数,但在这种情况下不起作用。