【问题标题】:Javascript won't escape Html stringJavascript 不会转义 Html 字符串
【发布时间】:2013-07-08 04:07:25
【问题描述】:

嘿,我编写了一段生成 Html 代码的 JavaScript,我试图将代码保存为字符串,然后将其复制到 <textarea>,但由于某种原因,当我使用 escape() 时,它会带来在谷歌浏览器中向上Uncaught SyntaxError: Unexpected token ILLEGAL。我不知道为什么,这是我的代码

            document.getElementById("share").value=escape('
<script src="main.js"></script>
<script src="event.js"></script>
<script src= "init.js"></script>
<script src= "util.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
<canvas width="1280" height="500" id="header_canvas"     >Please Update your browser to view this page</canvas>
<canvas width="1280" height="500" id="sub_header_canvas" >Please Update your browser to view this page</canvas>

<script>
function submit()
{
    header_text                 ='+document.getElementById("title").value+';
    cover_time_pan              ='+document.getElementById("cover_turn_time").value+';
    cover_turn_pause_time       ='+document.getElementById("cover_turn_pause").value+';
    text_time_pan               ='+document.getElementById("text_turn_time").value+';
    text_turn_pause_time        ='+document.getElementById("text_turn_pause").value+';
    header_reverse              ='+document.getElementById("reverse").checked+';
    header_grad_percent     ='+document.getElementById("grad_height").value+';
    header_grad_color       ='+document.getElementById("grad_colour").value+';

    ct0.src                 ='+document.getElementById("ct0").value+';
    ct1.src                 ='+document.getElementById("ct1").value+';
    ct2.src                 ='+document.getElementById("ct2").value+';

    tt0.src                 ='+document.getElementById("tt0").value+';
    tt1.src                 ='+document.getElementById("tt1").value+';
    tt2.src                 ='+document.getElementById("tt2").value+';

     cover_textures[0]=ct0;
     cover_textures[1]=ct1;
     cover_textures[2]=ct2;
     text_textures[0]=tt0;
     text_textures[1]=tt1;
         text_textures[2]=tt2;


    resize_window();
}
</script>       
<script>
    init_all();
    submit();
</script>

');

【问题讨论】:

  • 我已经回答了一个类似的问题here。问题在于字符串的“”部分。即使在 &lt;\/script&gt; 这样的字符串中,您也需要对其进行转义。
  • 天哪,现在知道了,非常感谢!

标签: html textarea getelementbyid


【解决方案1】:

问题是因为 javascript 字符串必须在换行符之前终止。 \n 存在的原因是为了让开发人员可以轻松地将换行符(ASCII:10)放入字符串中。

例如,当您有一个如下所示的字符串时:

//Note terminating double quote is not there , similar to your code
var foo = "Bob 

此时您的代码将出现语法错误并停止运行。

如果您希望在多行中包含一个字符串,则必须在终止该行之前插入一个反斜杠字符“\”,如下所示:

//Correct way of writing code
var foo = "Bob \
is \
cool.";

但是,该字符串不会在字符串被分成单独行的位置包含 \n 字符。在字符串中插入换行符的唯一方法是插入一个值为 10 的字符,最简单的方法是 \n 转义字符。

var foo = "Bob\nis\ncool.";

【讨论】:

  • 谢谢我让它逃脱 \n 但现在我被所有不断提出相同错误的转发 /s 困住了,除了 / 之外,它们是一种更简单的逃避它们的方法吗?或者我可以使用 / 吗? @hsemarap
猜你喜欢
  • 1970-01-01
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
相关资源
最近更新 更多