【问题标题】:Can't load CSS/JS on javafx Webview无法在 javafx Webview 上加载 CSS/JS
【发布时间】:2016-01-01 08:15:31
【问题描述】:

我无法让 css/js 显示在 Webview 上。

这是我正在做的事情:

初始化 webview 和引擎

WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
webEngine.setJavaScriptEnabled(true);

这是我加载 html 内容的地方:

htmlViewImgBtn.addEventHandler(MouseEvent.MOUSE_CLICKED,
    new EventHandler<MouseEven
        @Override
        public void handle(MouseEvent event){

            if (counter == 0){
            contentContainer.getChildren().addAll(browser);
            webEngine.loadContent(export.getHTML(note));
            //browser.getEngine().load("http://stackoverflow.com/questions/34554583/cant-load-css-js-on-javafx-webview");
            contentContainer.getChildren().remove(noteContent);
            counter = 1;
           }

           else {
           contentContainer.getChildren().remove(browser);
           contentContainer.getChildren().addAll(noteContent);
           counter = 0;
           }
       }
});

注意:注释代码在将网站加载到 webview 时有效,没有问题。但仍然不适用于我正在加载的内容。

加载的内容 (HTML) 如下所示:

<link href="prism.css" rel="stylesheet" type="text/css" />
<script src="prism.js" type="text/javascript"></script>
<pre><code class="language-java">System.out.println("Hello");
</code></pre>

另外,css和js文件和java文件在同一个目录

我可以通过在网络浏览器上加载 html 来确认它可以工作,我错过了什么?

【问题讨论】:

    标签: javascript html css javafx webview


    【解决方案1】:

    块引用

    我可以通过这样修改 html 来让它工作:

    "<link href=\"" + getClass().getResource("./prism.css") + "\"" + " rel=\"stylesheet\"" + " type=\"text/css\"" +  " />\n" + 
    "<script src=\"" + getClass().getResource("./prism.js") + "\"" + " type=\"text/javascript\"" + "></script>\n" +
    (rest of html);
    

    【讨论】:

      【解决方案2】:

      您可以使用 ResourceLoader 加载与 Java 类位于同一目录中的 HTML、js 和 css。

          URL url = getClass().getResource("index.html");
          webEngine.load(url.toExternalForm());
      

      【讨论】:

      • 我已经尝试过了,但没有运气。如果我从文件加载,这似乎可行;但是,我正在尝试从内存中加载 html,关于如何让它工作的任何想法?
      • 哦,我明白了,那么您需要稍微格式化一下 html 字符串。像这样的东西? webEngine.loadContent("");
      • 不走运,我对 js 和 css 文件都进行了您建议的更改。此外,当在网络浏览器上加载时,这似乎会破坏 html。这是 html 最终呈现的方式(以确保我确实注意到犯了任何错误):
        System.out.println("Hello"); 
      猜你喜欢
      • 1970-01-01
      • 2016-07-26
      • 2014-07-04
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      相关资源
      最近更新 更多