如何通过jar中的WebView加载TinyMCE编辑器?

时间:2012-03-07 18:23:35

标签: jar webview tinymce javafx-2

在我的JavaFX项目中,我试图通过WebView TinyMCE编辑器集成为HTML富文本编辑器。这是一个演示应用程序:

package tinydemo;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class TinyDemo extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Demo");
        WebView webView = new WebView();
        webView.getEngine().load(TinyDemo.class.getResource("simple.html").toExternalForm());
        StackPane root = new StackPane();
        root.getChildren().add(webView);
        primaryStage.setScene(new Scene(root, 500, 400));
        primaryStage.show();
    }
}

我使用的是Netbeans IDE,包视图是:

package

simple.html的内容:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Simple theme example</title>
        <script type='text/javascript' src='jquery-1.5.2.min.js'></script>
        <script type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                var wewe = document.getElementById('wewe');
                wewe.innerHTML += '<br/>protocol: '+ document.location.protocol;
                tinyMCE.init({
                    mode : "textareas",
                    theme : "simple"
                });
            });
        </script>
    </head>
    <body>

        <div id="wewe"></div>
        <h3>Simple theme example</h3>
        <textarea id="elm1" name="elm1" rows="15" cols="80" style="width: 80%">
                This is some example text that you can edit inside the &lt;strong&gt;TinyMCE editor&lt;/strong&gt;.
        </textarea>
        <script type="text/javascript">
            if (document.location.protocol == 'file:') {
                alert("The examples might not work properly on the local file system due to security settings in your browser. Please use a real webserver.");
            }
        </script>
    </body>
</html>

现在,当我从Netbeans运行应用程序时,TinyMCE编辑器会成功加载检测到的文件协议。

build

但是,当我从 dist 文件夹下的命令行运行生成的 TinyDemo.jar 时,我明白了:

jar

无法加载TinyMCE编辑器的地方。我认为问题是jar中TinyMCE的绝对/相对路径引用,但无法解决它。任何帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:3)

根据此forum discussion thread相对资源加载,目前只能在JavaFX的2.1 developer preview中正常工作,而不能在2.0GA版本中正常工作。

如果在升级到Java预览版的JavaFX之后,从jar加载资源仍然不起作用,那么你可以在类路径上部署TinyMCE但在打包的jar之外,以便使用(例如)加载它文件或http protcols而不是jar协议。或者您可以开发一个自定义协议处理程序,它从jar中加载资源,如引用的线程中所述。