2016-06-23 3 views
0

Попытка эха html для javascript в php-функции. Но я не знаю, если это возможно, чтобы повторить все, как это:echo javascript и html в php

if(!is_user_logged_in()) { 

    function add_preloader(){ 

     echo "<script> 
    if (readCookie('referrer') == null) { 
     <section class='loading-overlay'> 

     <div class='loader-inner ball-grid-pulse'> 

      <div></div> 

      <div></div> 

      <div></div> 

      <div></div> 

      <div></div> 

      <div></div> 

      <div></div> 

      <div></div> 

      <div></div> 

     </div> 

    </section>} 
</script>" ; 

    } 

Я пытаюсь показать прелоадер только один раз, используя куки в WordPress функции

+1

Да, вы можете эхо HTML и JS в PHP. И нет, вы не можете выводить HTML в JS, так как это неверный код. – Justinas

+0

Я бы никогда не рекомендовал вам выполнить javascript внутри такой php-функции. а также '

0

Возможно, не лучшая идея, но да, вы можете. Вы должны думать, что начальный парсер - это PHP, и он что-то выводит. В вашем случае PHP будет выводить это:

<script> 
    if (readCookie('referrer') == null) { 
     <section class='loading-overlay'> 
     <div class='loader-inner ball-grid-pulse'> 
      <div></div> 
      <div></div> 
      <div></div> 
      <div></div> 
      <div></div> 
      <div></div> 
      <div></div> 
      <div></div> 
      <div></div> 
     </div> 
     </section> 
    } 
</script> 

Этот код начинается и заканчивается скриптом и обрабатывает все внутри как скрипт. Проблема здесь в том, что <section ... не похож на Javascript.

Вы не можете вводить обычный HTML-код внутри функции Javascript и ожидать, что браузер это поймет. Он должен использовать только чистый Javascript, что-то вроде ...

<script type="text/javascript"> 
    if (readCookie('referrer') == null) { 
     var section = document.createElement('section'); 
     section.className = 'loading-overlay'; 
     var div = document.createElement('div'); 
     div.className = 'loader-inner ball-grid-pulse'; 
     section.appendChild(div); 
     var innerDiv = document.createElement('div'); 
     div.appendChild(innerDiv); 
     ... 
     ... 
     document.getElementById('container').appendChild(section); 
    } 
</script> 

Здесь container бы идентификатор HTML-тега уже существующий в DOM вашей страницы.