2015-10-15 1 views
2

Im пытается загрузить мой тег скрипта или некоторую функцию jquery после того, как страница полностью загружена в vaadin. Я использую аннотацию javascript для загрузки моих внешних js. @JavaScript ("vaadin: //themes/custom/resources/js/custom.js");Как загрузить функцию js после загрузки страницы в Vaadin

Есть ли какой-либо выход для вызова функции js после загрузки страницы или dom-объекта, созданного в html.

ответ

-1

Согласно the docs, добавьте следующий код в ваш custom.js

$(document).ready(function() { 
    //call your function 
}); 
+0

Это не будет работать должным образом при использовании инфраструктуры, такой как Vaadin, поскольку это приложение с одной страницей. – steve

+0

@steve Спасибо за ваш вклад. Можете ли вы предоставить более подробную информацию или образцы для подтверждения своего утверждения и объяснения, почему это может произойти? Я спрашиваю, потому что я использовал его без проблем ... – Morfic

+0

Это зависит от того, для чего вы его используете, поскольку «готов» запускается, когда DOM полностью загружен. Это, однако, не означает, что компоненты Vaadin, html, элементы загружаются и отображаются. Поскольку плакат сказал, что «полностью загружен в ваадин», $ (документ). Уже не будет работать так, как ожидалось. – steve

0

Да, есть. Попробуйте этот подход:

import com.vaadin.ui.JavaScript; 
...  
StringBuilder script = new StringBuilder(); 
script 
    .append("var head = document.getElementsByTagName('head')[0];") 
    .append("var script = document.createElement('script');") 
    //...do other stuff to set up the "script" tag (add content, source, whatever) 
    .append("head.appendChild(script);"); 
JavaScript.getCurrent().execute(script.toString()); 

Если вы сделаете это до полной загрузки страницы, тогда все будет хорошо. Но если вы захотите сделать это после факта (через какое-то событие или прослушиватель кликов), вам также придется использовать push Vaadin, чтобы направить его на JavaScript для клиента. Как так:

import com.vaadin.ui.UI; 
... 
UI.getCurrent().access(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     //code from above that leads to JavaScript.getCurrent().execute(...) 
     UI.getCurrent().push(); 
    } 
}); 

И конечно же, это предполагает, что вы нажим включена в приложение Vaadin. Ссылка https://vaadin.com/book/-/page/advanced.push.html

+0

Adeel Mufti thanx alot для вашей помощи. Если у вас нет, я могу получить ваш адрес электронной почты, пожалуйста. –

+0

@hermanshafiq Привет, если этот ответ исправил (или помог исправить) вашу проблему, подумайте над тем, чтобы выбрать его как правильный ответ на свой вопрос, щелкнув значок проверки (v) перед счетчиком голосов. Это SO способ сказать спасибо кому-то, и при этом вы также поможете другим пользователям, у которых может быть аналогичная проблема, чтобы быстро найти ответ на их проблему. Вы также можете добавить и выбрать свой собственный ответ, если вы решили его решить иначе, чем любое из предлагаемых решений. – Morfic

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

  • Нет связанных вопросов^_^