2015-09-24 6 views
0

Я хотел бы настроить внешний вид загружаемого веб-сайта, поэтому я создал небольшой файл test.css, который ничего не меняет, но меняет внешний вид всех строк таблицы:JavaFx WebEngine - переписывание таблицы стилей сайта с локальными файлами

tr { 
    height: 22px; 
    background-image: url("test.png"); 
} 

Как получить он WebEngine, чтобы загрузить этот файл и заменить собственные правила CSS страницы, с моей? Кроме того, я хотел бы иметь возможность загружать страничные файлы css и не один огромный файл для всех страниц.


Я нашел this page, но он показывает только, как работать через DOM и назначать новый стиль желаемым элементам вручную. Это, конечно, не то, что я хочу. Вместо этого я бы хотел, чтобы браузер использовал мои файлы как «пользовательские настройки по умолчанию».

Thx за любую помощь :)

ответ

1

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

Вы захватите Document от WebEngine, retreave в head элемент и добавить style дочерний элемент к нему, содержащий расположение ГКЗ таблицы стилей вы хотите добавить.

Document doc = webView.getEngine().getDocument(); 
URL scriptUrl = getClass().getResource(pathToAttachedDocument); // pathToAttachedDocument = CSS file you want to attach 
String content = IOUtils.toString(scriptUrl); // Use Apache IO commons for conveniance 
Element appendContent = doc.createElement("style"); 
appendContent.appendChild(doc.createTextNode(content)); 
doc.getElementsByTagName("head").item(0).appendChild(appendContent); 

Кстати, JavaScript может быть добавлен подобным образом, это просто «сценарий» вместо «стиля»

+0

Моя ошибка заключалась в создании 'link' элемент для ссылки на файл CSS вместо' style', но делать это после того, как страница полностью загружена, очевидно, не может работать. Большое спасибо! Еще одна вещь: ** Где я должен поставить 'test.png'? ** Я попытался сохранить его в той же папке, что и файл css, и в корневой папке проекта. Ссылка, похоже, работает только при привязке ее к онлайн-URL. – dadoosh

+0

'test.png', как он определен в вашем примере, должен находиться в том же месте, что и загруженный файл CSS. Вы также можете поместить его в другую папку и использовать относительный путь к нему в CSS. – hotzst

+0

Я попытался поместить файл в ту же папку, но потом ничего не произошло - фон остался пустым. Он работает только тогда, когда я копирую файл в свое веб-пространство и загружаю его оттуда ('background-image: url (« http://www.blabla.com/test.png »)! Important;'), но это не предполагаемое решение: O – dadoosh

0

Я хотел бы сделать так, чтобы добавить или заменить какие-либо правила:

String css = getFileAsString("style.css"); 
Document doc = webEngine.getDocument(); 
Element e = doc.getElementById("my_style"); 
e.setTextContent(css); 

... дали

<style id="my_style"></style> 

тег в HTML-документе.

0

setUserStyleSheetLocation() был разработан для этой цели: чтобы пользователь веб-страницы, стиль его, как они хотят.

Использование:

webEngine.setUserStyleSheetLocation(styleSheetURL.toString());

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

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