Mam projekt, w którym oceniany jest jakiś plik JavaScript. Ponieważ ciąg musi być zmieniony (tylko pojedyncze cudzysłowy), napisałem dokładnie ten sam kod w funkcji testowej. Mam następujący kawałek dość prostego kodu JavaScript:Wywoływanie pojedynczych cudzysłowów w łańcuchu JavaScript do oceny JavaScript
function testEscape() {
var strResult = "";
var strInputString = "fsdsd'4565sd";
// Here, the string needs to be escaped for single quotes for the eval
// to work as is. The following does NOT work! Help!
strInputString.replace(/'/g, "''");
var strTest = "strResult = '" + strInputString + "';";
eval(strTest);
alert(strResult);
}
I chcę go ostrzec, mówiąc: fsdsd'4565sd
.
Stosunkowo bezpieczniejszym podejściem może być 'var strResult = eval (" (+ + strInputString + ")"); ". Również 'STRING' jest niezmienne, więc' string.replace() '** zwraca ** zastąpiony wynik, a nie ** modyfikuje ** ciąg. – Passerby
Czy tego oczekujesz http://jsfiddle.net/ebTtp/ – ssilas777