反引号在移动浏览器中造成 jQuery 错误

Backticks creates jQuery error in mobile browser

我有一段文本是使用 PHP 从我的数据库中检索到的,其中包含 " ' 等字符,并且还有换行符。现在我使用像这样的反引号将它传递给 jQuery 字符串

var str = `<?php echo $text; ?>`;

它在桌面浏览器上运行良好,但当我在移动浏览器上尝试时,虽然我在移动浏览器中看不到 console.log,但我相信我遇到了一些错误,因为我的 jQuery代码拒绝运行,但是当我注释掉上面的行时它工作正常。请问有人知道我该如何解决这个问题吗?

您依赖于 JavaScript 的一项相当新的功能(作为 ES2015 的一部分于 2015 年 6 月正式推出,又名 "ES6"):Template literals。您 运行 使用不支持模板文字的旧 JavaScript 引擎的浏览器并不奇怪。

如果输出碰巧 包含 个反引号,它也会失败。

这里正确的做法是正确转义字符串内容。 PHP 的 json_encode 会很乐意接受一个字符串并为您输出一个 JavaScript 兼容的转义版本:

var str = <?php echo json_encode($text); ?>;

如果$text包含字符串,例如:

Bob: Hi, my name is Bob, but people call me "Bobby;" it's a nickname.
Wilma: Hi Bobby!

到达浏览器的内容将是:

var str = "Bob: Hi, my name is Bob, but people call me \"Bobby;\" it's a nickname.\nWilma: Hi Bobby!";