0

echoユーザーがモバイル デバイス (768px 未満) を使用しているか、それより大きいかどうかに基づいて、いくつかのコードを作成したいと考えています。

私は次のことをしました:

            <?php  
              if ( is_home() ) {
            ?>
              <script type="text/javascript">
              if ($(window).width() < 768) {
                  document.write("<?php echo my_shortcode("[mobile-slider]"); ?>");
              } else {
                  document.write("<?php echo my_shortcode("[desktop-slider]"); ?>");
              }
              </script>
            <?php                    
            } else {
              //do the stuff for the other pages

            } ?>

しかし、ホームページがレンダリングされると"); } else { document.write("、ホームページのスライダーが表示され、次に"); }. 理由はありますか?

JSエラー

SyntaxError: 終了していない文字列リテラル

document.write('

HTML 出力 - スクリプトを壊していると思われる改行を追加しているようですか?

<script type="text/javascript">
if ($(window).width() < 768) {
document.write("
<!--slider--> 
4

3 に答える 3

0

これを試して:

document.write(<?php echo "\"[mobile-slider]\""; ?>);
于 2013-09-30T02:07:26.503 に答える
0
"<?php echo my_shortcode("[mobile-slider]"); ?>"

への変更

"<?php echo my_shortcode('[mobile-slider]'); ?>"
                         ^               ^  // changed quotes here

またはエスケープ引用符

"<?php echo my_shortcode(\"[mobile-slider]\"); ?>"
于 2013-09-30T01:46:24.450 に答える
0

他の人が述べたように、引用符は間違いなくオフです。内側の引用符は外側の引用符とは異なるか、エスケープする必要があります。

メインドキュメント(javascriptの外側)でphp関数を実行し、javascriptでその内容を表示/非表示/変更することを選択することは可能ですか?

それが不可能な場合は、do_shortcode フックを使用する代わりに、関数を直接呼び出してみてください。

最終的な代替手段として、ここで ajax 呼び出しを使用する必要がある場合があります。ここでやろうとしている方法でショートコードを呼び出すことができるかどうかはわかりません。

于 2013-09-30T05:09:57.327 に答える