Nano Hash - криптовалюты, майнинг, программирование

Как загрузить html и javascript в webengine из loadContent()?

Может ли кто-нибудь дать несколько предложений о том, как загрузить следующее в веб-просмотрщик из loadContent ()?

http://jsbin.com/aqupun/6/edit

Я пытался сделать что-то подобное, но, похоже, это не сработало. Спасибо!

    Scanner sc1 = new Scanner(new File("src/web/web.html"));
    String webStr = sc1.useDelimiter("\\Z").next();

    Scanner sc2 = new Scanner(new File("src/web/data.js"));
    String dataStr = sc2.useDelimiter("\\Z").next();

    Scanner sc3 = new Scanner(new File("src/web/cytoscape.min.js"));
    String cytoStr = sc3.useDelimiter("\\Z").next();

    Scanner sc4 = new Scanner(new File("src/web/jquery.min.js"));
    String jqueryStr = sc4.useDelimiter("\\Z").next();

    webEngine.loadContent(cytoStr, "text/javascript");
    webEngine.loadContent(jqueryStr, "text/javascript");
    webEngine.loadContent(dataStr, "text/javascript");
    webEngine.loadContent(webStr, "text/html");
23.11.2013

  • Не могли бы вы пояснить, что означает кажется, не работает? знак равно 23.11.2013
  • В конце концов это работает; но у вас не может быть НИКАКИХ странностей. Нет журнала, который я могу обнаружить, и я не уверен, как мы будем подглядывать и просматривать значения состояния из движка (пока). Просто упорствуйте. 28.06.2016

Ответы:


1

Сначала нужно положить эти три файла в ресурсы одного уровня или на жесткий диск.

Чтобы загрузить ваш контент прямо из памяти, вы можете использовать

webView.getEngine().loadContent("your html")

Из JavaDoc:

public void loadContent(String content)

Загружает данный контент напрямую. Этот метод полезен, когда у вас есть контент, созданный в памяти или загруженный из какой-либо системы, к которой нельзя получить доступ через URL-адрес.

Имейте в виду, однако, что связанные ресурсы должны быть доступны по их URL-адресам, то есть на диске или в ресурсах. Чтобы отразить динамические изменения в вашем веб-приложении, я предлагаю вам вызывать Java из JS. Это можно сделать, предоставив Java-объект в JS-приложение: Связь между JavaFX и JavaScript внутри WebView с использованием JSObject

Здесь вы можете найти демонстрацию браузера и упрощенный компонент WebView: GUI Java для отображения веб-страниц и возврата HTML.

24.11.2013

2

Я только что узнал, что использование тега <base> в HTML также помогает:

<html>
    <head>
        <title>The slash at the end of the href is important!</title>
        <base href="file:///absolute/path/to/your/docroot/" />
    </head>
    <body>
        <img src="image.png"/>
    </body>
</html>

Если вы загрузите приведенный выше код через engine.loadContent(String), то image.png будет загружен из /absolute/path/to/your/docroot/image.png.

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

Это было протестировано с WebView Java 8u25.

21.10.2014
  • Это звучит как глупый вопрос (но)... что такое docroot, когда я загружаю строку -- ** .. load( someText, text/html ) **, я не уверен, что это глупый вопрос, в конце концов. Я заметил, что с версией load(URI) открывается сокет и volia все работает. Кто-нибудь сталкивался с подсказкой от проекта Web Kit? 27.06.2016
  • @will, если вы спрашиваете, что такое база будет при использовании loadContent, ответ, кажется, null. Вот что я получаю, когда делаю <script>document.write(document.baseURI);</script> 31.01.2018
  • Для загрузки относительных ресурсов (указанных в HTML) при использовании loadContent, кажется, перед загрузкой в ​​HTML нужно установить <base> href. 31.01.2018
  • Java может получить для вас абсолютный путь к вашему docroot с помощью чего-то вроде URL url = YourClass.class.getResource("yourResource.js");, а затем получения родительского каталога этого ресурса . 31.01.2018
  • @BradTurek ... спасибо за эти идеи. Похоже, что когда база задается HTML, все ставки сняты. дает ли document.baseUR правильное значение при установке в HTML (документе)? Я считаю, что мы не можем установить baseURI -- иначе это не будет иметь никакого эффекта -- так как base используется для загрузки HTML (как и все в <head>.... Ну ладно... 31.01.2018

  • 3

    Вам просто нужно загрузить свою HTML-страницу, используя метод load() файла WebEngine. Загрузка связанных CSS и JavaScript будет выполнена за вас WebEngine.

    Вот как я загрузил AceEditor в WebView:

    введите здесь описание изображения

    и код для этого состоял всего из двух строк:

    engine = webView.getEngine();
    engine.load("file:///home/littlejavachild/Downloads/AceEditor/ace-builds-master/MyTry.html");  
    

    Загрузка исходного кода JavaScript и CSS обрабатывается для меня движком.

    Документы для метода здесь:

    public void load(java.lang.String url)
    

    Загружает веб-страницу в этот движок. Этот метод запускает асинхронную загрузку и немедленно возвращает значение.

    Параметры: url - URL-адрес веб-страницы для загрузки

    23.11.2013
  • Привет, спасибо за ваш ответ. Это тоже сработает, но у меня есть страница, которая динамически обновляется, поэтому я хочу сохранить ее в памяти, а не сохранять на жестком диске для загрузки. 24.11.2013
  • просто укажите URL. Попробуйте открыть свою учетную запись facebook из веб-просмотра. Он будет работать как настоящий браузер... никаких проблем 24.11.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..