Да, есть. Попробуйте этот подход:
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
Это не будет работать должным образом при использовании инфраструктуры, такой как Vaadin, поскольку это приложение с одной страницей. – steve
@steve Спасибо за ваш вклад. Можете ли вы предоставить более подробную информацию или образцы для подтверждения своего утверждения и объяснения, почему это может произойти? Я спрашиваю, потому что я использовал его без проблем ... – Morfic
Это зависит от того, для чего вы его используете, поскольку «готов» запускается, когда DOM полностью загружен. Это, однако, не означает, что компоненты Vaadin, html, элементы загружаются и отображаются. Поскольку плакат сказал, что «полностью загружен в ваадин», $ (документ). Уже не будет работать так, как ожидалось. – steve