我正在尝试从PHP(wordpress插件)输出谷歌翻译代码到页面,它给了我非法令牌错误,即使我将完全相同的代码行直接粘贴到控制台并运行它,它的工作原理。
这是我的PHP:
function AddTranslateSidebar(){
echo "<script>
jQuery(document).ready(function(){
gt = escape('<div id=\"google_translate_element\"></div><script type=\"text/javascript\">function googleTranslateElementInit() {new google.translate.TranslateElement({pageLanguage: \"en\", layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, \"google_translate_element\");}</script><script type=\"text/javascript\" src=\"http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit\"></script>');
jQuery('#sidebar').prepend(unescape(gt));
});
</script>";
}
该代码将以下内容作为HTML / JavaScript输出到页面中:
<script>
jQuery(document).ready(function(){
gt = escape('<div id="google_translate_element"></div><script type="text/javascript">function googleTranslateElementInit() {new google.translate.TranslateElement({pageLanguage: "en", layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, "google_translate_element");}</script><script type="text/javascript" src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>');
jQuery('#sidebar').prepend(unescape(gt));
});
</script>
导致错误
Uncaught SyntaxError: Unexpected token ILLEGAL
在gt = escape(...)上;线。
但是,如果我使用检查器直接从HTML源代码复制该代码,然后将其粘贴到控制台并运行它,它就可以运行并显示转换下拉列表。
为什么会这样?
感谢。
答案 0 :(得分:4)
字符序列</script>
始终意味着结束当前脚本块。我怀疑这是造成这个问题的。
您不能在JavaScript字符串中包含</script>
逐字。相反,你需要拆分它并重新连接各个部分。
E.g。这样:
"</script>"
应该成为这个:
"<" + "/script>"
答案 1 :(得分:0)
将gt = escape('...')
更改为gt = '...'