Si tu problema viene de php deberías ensayar una solución en ese lenguaje. Fijate si esto te da una idea:
Código PHP:
<?php
function js_encode($s){
$texto='';
$lon=strlen($s);
for($i=0;$i<$lon;++$i){
$num=ord($s[$i]);
if($num<16) $texto.='\x0'.dechex($num);
else $texto.='\x'.dechex($num);
}
return $texto;
}
$texto=utf8_decode('Este es un texto que tiene
saltos de línea y "comillas". Veremos cómo se ve en javascript.');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<div id="ejemplo"></div>
<script type="text/javascript">
document.getElementById('ejemplo').innerHTML='<?php echo js_encode($texto) ?>';
</script>
</body>
</html>
Si mirás el código fuente resultante verás cómo realiza el escape la función php. (utf8_decode puede obviarse si tu servidor codifica adecuadamente -no es mi caso-).