反引号在移动浏览器中造成 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!";
我有一段文本是使用 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!";