Escape de aspas simples em parâmetros de function JavaScript

Eu preciso escaping aspas simples em parâmetros de function JavaScript para evitar isso:

onclick="Javascript:INSERT_PRODUCT('188267','WILL AND GRACE','32311','L'ANNIVERSARIO DINOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5 ',this);" 

Mas eu preciso escaping deles dentro de uma chamada de function, já que eu não sei os valores que serão passados ​​(variables ​​db que não posso escaping do database).

Existe uma function que me permite fazer algo parecido com o seguinte?

 onclick="Javascript:function(escape(param1), escape(param2), escape(param3));" 

  JSON.stringify(plainTextStr).replace(/&/, "&").replace(/"/g, """) 

irá produzir uma string que você pode inserir com segurança em um atributo entre aspas e que terá o mesmo significado quando visto pelo interpretador JavaScript.

A única ressalva é que algumas linhas de comando do Unicode (U + 2028 e U + 2029) precisam ser escapadas antes de serem incorporadas em literais de cadeia JavaScript, mas o JSON requer apenas que \r e \n sejam escapados.

Escape o apóstrofo com uma barra invertida:

 onclick="INSERT_PRODUCT('188267','WILL AND GRACE ','32311','L\'ANNIVERSARIO DI NOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5 ',this);" 

Talvez não seja totalmente claro a partir da pergunta, mas assumindo que tudo que você quer é enviar isso para um script PHP para armazenar em um database, é claro que você idealmente utilizaria vários methods do PHP como stripslashes() – mas se você realmente não tentando ficar muito chique, basta adicionar 1 barra na frente de qualquer cota única para enviar uma consulta SQL diretamente para o PHP a partir do lado do cliente. Não é seguro , mas talvez não seja necessário também.

 str.replace(/'/g, "\\'"); // escaping \ with \, so used 2x 

faz o truque., como por exemplo em algo como isto:

 var body = $('#body').val().replace(/'/g, "\\'"); myCustomSQLqueryFunction("UPDATE mytable SET `content`='"+ body +"';" ); 

O MySQL agora irá armazenar seu body como você o vê no campo de formulário.

Esta function funcionou para mim (remove e restaura a citação novamente): Adivinhando que os dados a serem enviados é o valor de um elemento de input,

 var Url = encodeURIComponent($('#userInput').val().replace("'","\\'")); 

Então pegue o texto original novamente:

 var originalText = decodeURIComponent(Url); 
 var cmpdetail = cmpdetail.replace(/'/g, "\\'"); 

está funcionando para mim.

Eu prefiro usar aspas simples para definir strings JavaScript. Então eu escapei de minhas aspas duplas incorporadas como segue.

É assim que eu faço, basicamente str.replace(/[\""]/g, '\\"') .

 var display = document.getElementById('output'); var str = 'class="whatever-foo__input" id="node-key"'; display.innerHTML = str.replace(/[\""]/g, '\\"'); //will return class=\"whatever-foo__input\" id=\"node-key\"