在 GWT UIBinder 对话框中使用 CKEditor

Using CKEditor in GWT UIBinder dialog box

本文关键字:CKEditor 对话框 GWT UIBinder      更新时间:2023-09-26

我正在尝试在UI绑定器中的GWT对话框中使用CKEditor。 我已经完成了以下工作

包含在模块 html 文件中

<script src="ckeditor/ckeditor.js"></script>

包含在 UI 绑定器 XML 文件中

<textarea class="ckeditor" id="editor1" rows="5" cols="15"></textarea>

包含的 UI 绑定程序 JAVA 文件

public static native void loadckeditor() 
/*-{
CKEDITOR.replace( 'editor1' );
}-*/;

我得到的错误是"未定义 CKEDITOR"我不是JS专家,但CKEDITOR满足了我的全部功能,并按照客户规范使用。

尝试使用 ScriptInjector:http://www.gwtproject.org/javadoc/latest/com/google/gwt/core/client/ScriptInjector.html

 ScriptInjector.fromUrl("http://example.com/foo.js").setCallback(
 new Callback() {
    public void onFailure(Exception reason) {
      Window.alert("Script load failed.");
    }
    public void onSuccess(Void result) {
       // insert code to setup the CKEditor
    }
 }).inject();

我认为javascript不在正确的范围内。

您需要在

CKEDITOR 变量前面加上$wnd:

$wnd.CKEDITOR.replace( 'editor1' );

从文档中:

从 JSNI 访问浏览器的窗口和文档对象时, 必须将它们分别引用为 $wnd 和 $doc。您的编译 脚本在嵌套帧中运行,$wnd和$doc会自动运行 已初始化以正确引用主机页的窗口和文档。