我試圖從PHP(wordpress插件)輸出谷歌翻譯代碼到頁面,它給我非法令牌錯誤,即使當我將完全相同的代碼行直接粘貼到控制檯並運行它時,它可以工作。爲什麼從PHP輸出JavaScript時會出現非法令牌?
這是我的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源代碼複製該代碼,然後將其粘貼到控制檯並運行它,它將起作用,並且會顯示translate下拉菜單。
這是怎麼發生的?
謝謝。
進行適當的返回的字符串轉義?你有沒有粘貼到jslint? –
爲什麼逃避/ unescape? 'GT = 'blahblahblah'; .prepend(gt)'也可以。 –
@JayBlanchard是的,非轉義的字符串正常回來 - 正如我所說,我直接從PHP的HTML輸出複製輸出,並將其粘貼到控制檯,它運行得很好。你可以在這裏看到:http://www.georgiancollege.ca/internationaldev/current-students/ – tsdexter