В настоящее время я расширяю этот (https://github.com/frankskol/AdaptiveTesting2/tree/master) сайт адаптивного тестирования, который использует Vaadin 7 для включения режима с вопросами из Geogebra. Соответствующие классы здесь - DefaultView и GeogebraTestView. Проблема в том, что я не могу получить приложение дляВыполнить. Согласно вики Geogebra (https://wiki.geogebra.org/en/Reference:GeoGebra_Apps_Embedding), есть четыре шага для встраивания приложения.
1) Добавить информацию к мета в разделе заголовка
2) Включить библиотеку javascript deployggb.js
3) Создайте элемент для приложения GeoGebra на своей странице
4) Настройте и вставьте приложение
Моя проблема на шаге 4, так как я не могу получитьисполняемый Javascript.
Шаги 1 и 2 уже выполнены в defaultView в методе servletInitialized()
.И библиотека, и мета-конфигурации можно увидеть в начале.Для шага 3 я создал новую метку с div
и добавил ее.Также можно увидеть в коде HTML, так что должно работать.Для шага 4 я создал строку со сценарием и попытался выполнить ее с Page.getCurrent().getJavaScript().execute(script.toString());
, как показано здесь: https://vaadin.com/forum/thread/791748/how-to-add-javascript-file-and-in-script-tags Однако приложение по-прежнему не отображается на странице.
JavaScript.getCurrent().execute("alert('Hello')");
также не работает, и другое решение, getApplication().getMainWindow().executeJavaScript(script.toString());
, похоже, здесь не работает, так как программа не распознает getApplication
или getMainWindow()
.
Label ggbElement = new Label("<div id=\"ggb-element\"></div>",ContentMode.HTML);
addComponent(ggbElement);
StringBuilder script = new StringBuilder();
script.append("var ggbApp = new GGBApplet({\"appName\": \"graphing\", \"width\": 800, \"height\": 600, \"showToolBar\": true, \"showAlgebraInput\": true, \"showMenuBar\": true }, true);")
.append(" window.addEventListener(\"load\", function() { ggbApp.inject('ggb-element');\n" +
" });");
//execute Javascript
JavaScript.getCurrent().execute(script.toString());
//or
//Page.getCurrent().getJavaScript().execute(script.toString());
Ожидаемый результат будетприложение Geogebra, появившееся на странице, как видно из одного из примеров Live на вики Geogebra, но реальный результат - просто пустая страница.