由于换行符而导致的文档写入错误


Document.write errors because of line break?

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

我的主页呈现并显示"); } else { document.write(",然后是主页滑块,然后是"); }。知道为什么吗?

JS错误

语法错误:未终止的字符串文本

document.write("

HTML 输出 - 似乎正在添加换行符,我认为这破坏了脚本?

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

即使document.write("开盘后有换行符,我怎样才能让它仍然运行?

我也尝试了以下方法,但它仍然在屏幕上打印} else {

<script type="text/javascript">
              if ($(window).width() < 768) {
                <?php echo do_shortcode("[mobile-slider]"); ?>
              } else {
                <?php echo do_shortcode("[desktop-slider]"); ?>
              }
</script>
好的,

所以我通过执行以下操作解决了这个问题。

使用 JS,如果屏幕宽度小于 768px,我将一个变量设置为 1。使用 PHP,我将检查该变量并相应地echo

完全不依赖PHP来生成滑块会更容易和更干净。

将容器元素放在您希望滑块在页面中显示的位置:

<div id="slider-ct"></div>

然后使用 JavaScript 生成滑块(当然,您可以将代码组织成模块,但这只是一个示例):

$(function () {
    var $sliderCt = $('#slider-ct');
    if ($(window).width() < 768) {
        $sliderCt.html('mobile slider');
        return;
    }
    $sliderCt.html('desktop slider');
});

这是解决方案:

   <?php        
    $v1  = do_shortcode("[mobile-slider]");   
    $v2 = do_shortcode("[desktop-slider]");
    function do_shortcode($va){
    return "here i am:" . $va;
    }
    ?>

 <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript">
                  if ($(window).width() < 768) {
                     $('body').html("<?php echo $v1; ?>");
                  } else {
                     $('body').html("<?php echo $v1; ?>");
                  }
    </script>
    </head>
    <body>

这行就是原因。

"<?php echo do_shortcode("[mobile-slider]"); ?>"

您需要转义解释器,或者您需要更改字符串组合以在某处使用 ' 代替 "。