2

Google 翻訳コードを PHP (wordpress プラグイン) からページに出力しようとしていますが、まったく同じコード行をコンソールに直接貼り付けて実行しても、Illegal Token エラーが発生します。

これが私の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 ソースから直接コピーし、コンソールに貼り付けて実行すると、機能し、翻訳ドロップダウンが表示されます。

なぜこうなった?

ありがとう。

4

2 に答える 2

4

文字のシーケンスは、</script>常に現在のスクリプト ブロックを終了することを意味します。私の疑いは、これが問題を引き起こしているということです。

</script>JavaScript 文字列に verbatim を含めることはできません。代わりに、分割してパーツを再連結する必要があります。

例:

"</script>"

これになるはずです:

"<" + "/script>"
于 2012-11-08T19:34:23.647 に答える
0

gt = escape('...')ただに変更gt = '...'

于 2012-11-08T19:32:29.543 に答える