如何在JavaScript变量中包含转义的<script> </ script>标记?

m R*_*Raj 11 javascript

我在Javascript中有一个字符串,我必须转义几个字符:

<script>
function GenerateCode() {
     alert(ctry);
     var script = "<script async src=\"//somesite.com/feed/livetrend.js\"></script>";
}
</script>
Run Code Online (Sandbox Code Playgroud)

我尝试了以下来逃避角色:

var script = "<script async src=\"//somesite.com/feed/livetrend.js\"></script>";
Run Code Online (Sandbox Code Playgroud)

但是,尽管已经考虑\在前面包含一个转义字符,但这不能正常工作"

这是一个错误 - unterminated string constant.

Ale*_*ara 25

问题是,当浏览器</script>在开放标记内遇到结束标记时<script>,无论使用它的上下文如何,它都会在那里终止脚本标记.有两种方法可以避免这种情况.

选项1 - /在结束script标记中转义:

var script = '<script async src="//somesite.com/feed/livetrend.js"><\/script>';
Run Code Online (Sandbox Code Playgroud)

选项2 - 在注释掉的HTML注释中包装JavaScript:

<script>
/*<!--*/
var script = '<script async src="//somesite.com/feed/livetrend.js"></script>';
/*-->*/
</script>
Run Code Online (Sandbox Code Playgroud)

选项3 - 将JavaScript放入外部文件:

当然,将JavaScript移动到外部文件将完全避免这个问题,尽管它可能不是更好.