字符串文字在Chrome,Firefox中导致“意外的令牌ILLEGAL”

时间:2012-10-01 18:38:15

标签: javascript syntax-error string-literals

以下是导致Firefox和Chrome出错的整个文档:

<!DOCTYPE html>
<html>
<head>
    <script>
        var strs = [], scripts = ['harbl.js'], s = 0;
        strs.push('<script src="' + scripts[s] + '"></script>');
    </script>
</head>
<body>
    <p>buh...</p>
</body>
</html>

http://jsfiddle.net/cryptoquick/J4zZT/

我得到的错误是:

Uncaught SyntaxError: Unexpected token ILLEGAL 

这让我很困惑。

3 个答案:

答案 0 :(得分:9)

</script>文字由浏览器解析,因为它在遍历代码时不知道上下文。你必须这样逃避它:<\/script>。这是一个众所周知的问题。

答案 1 :(得分:3)

将其更改为:

strs.push('<script src="' + scripts[s] + '"></s' + 'cript>');

答案 2 :(得分:-1)

Front Slash '/'被视为特殊字符。这是导致错误的原因。

strs.push('<script src="' + scripts[s] + '"><\/script>');

请阅读此帖以获取更多信息JavaScript and forward slashes in strings