2015-05-13 4 views
2

После загрузки моей страницы я запускаю сценарий, в котором динамически добавляю событие click к моей скрытой кнопке и запускаю щелчок. Таким образом я заставляю javascript-библиотеку перезагружать каждый раз при перезагрузке страницы. Затем эта библиотека выполняет запрос, и ответ отображается соответствующим образом. Первый раз, когда я загружаю страницу, отображается ответ (выделен выделенный текст). В следующий раз библиотека перезагружается, но ответ не отображается. Я хочу, чтобы он отображался каждый раз, когда я перезагружаю страницу.Динамический контент не отображается на странице reload

Я попытался отключить кеш, обновить его с помощью shift + f5, но все равно безуспешно.

Это мой код:

<body> 
    <div id="content"> 
     <div id="pdfContainer" class = "pdf-content"> 
     </div> 
    </div>  
    <input id="btn" type="button" hidden="true" /> 

    <script> 
     function loadAnnotator() { 

      var content = $('#content').annotator(); 
      console.log("Annotator loaded"); 

     }; 
     $(window).load(function() { 

      var btn = $("#btn");    
      if(btn !== null && btn !== undefined) { 

       btn.on('click', loadAnnotator);      
       btn.click(); 
      } 
     }); 
    </script> 
</body> 

я могу заставить его работать с отображением и вручную, нажав на эту кнопку, но это не желаемое поведение.

Как я могу заставить его работать так, как я желаю? Заранее спасибо.

+0

Каждый скрипт выполняется автоматически при перезагрузке, даже если он кэширован, он запускается. Весь подход кажется мне неправильным. Вопрос также путается в отношении событий нажатия и загрузки. – DanFromGermany

+0

Это всего лишь одна из многих попыток, я попытался с помощью и т. Д. Любой другой подход, который работает, также будет прекрасен. –

+0

Почему бы не назвать эту функцию напрямую. Вы добавляете слушателя, а затем запускаете событие click. – Fyre

ответ

-1

решаемые: Я добавил таймер и заставил кнопку быть нажата после 300мс.

Как-то вроде этого:

<body> 
    <div id="content"> 
     <div id="pdfContainer" class = "pdf-content"> 
     </div> 
    </div>  
    <input id="btn" type="button" hidden="true" onclick="loadAnnotator()" /> 

    <script> 

     var content = null; 
     function loadAnnotator() { 
      if (content === null) { 
       content = $('#content').annotator(); 
      } 
      console.log("Annotator loaded"); 
     } 
     ; 
     function clickedButton() { 
      var btn = $("#btn")[0]; 
      if (btn !== null && btn !== undefined) { 
       btn.click(); 
       console.log("Button is clicked"); 
      } 
     } 
     $(window).load(function() { 
      setTimeout(clickedButton, 300); 
     }); 

    </script> 
</body> 

Кроме того, я выслушал предложения, как

var btn = $("#btn")[0]; 

Иногда забываешь о таких фундаментальных вещах, о JQuery :) Если добавить время меньше 300 мс, он ведет себя так, как я упоминал выше.

Благодарю вас, все вы!

0

Вместо всего хака, попробуйте этот Oneliner вместо:

$($('#content').annotator)); 

Там нет необходимости для скрытой кнопки. Если это не работает, есть шанс, что «аннотатор» не будет инициализирован до этого сценария.

+0

По-прежнему я изменяю содержимое моего jsp, аннотации хорошо отображаются при перезагрузке, но когда я перезагружаюсь снова - никаких аннотаций (и аннотатор не перезагружен) –

0

Проблема с btn.click(); Это не работает в некоторых браузерах!

JavaScript, чтобы спасти как этот btn[0].click(); или вам необходимо изменить логику следующим

<body> 
<div id="content"> 
    <div id="pdfContainer" class = "pdf-content"> 
    </div> 
</div>  
<input id="btn" type="button" hidden="true" /> 

<script> 

     var content =null; 
    function loadAnnotator() { 
     if(content==null)content =$('#content').annotator(); 
     console.log("Annotator loaded"); 
    }; 
     function clickedButton(){ 
      loadAnnotator(); 
     } 
    $(window).onLoad(function() { 
     var btn = $("#btn");    
     if(btn !== null && btn !== undefined) { 
      btn.on('click', clickedButton);  
      clickedButton();     
     } 
    }); 
</script> 
</body> 
+0

Нет, это работает так же ...просто загружая первую страницу, и затем да, аннотатор загружается каждый раз, но ранее сохраненные аннотации не отображаются ... –

Смежные вопросы