0

我创建了一个自定义功能区按钮,我将外部内容加载到模态对话框中。我想在编辑器上插入一些文本并关闭对话框。当我单击对话框上的某些内容时,函数 OnPopClosed 正在运行,但出现错误:未定义 RTE,因此我无法在编辑器中插入任何内容。有任何想法吗?

function init(){
    var options = SP.UI.$create_DialogOptions();
    options.title = "Sharepoint Plugin";
    options.width = 600;
    options.height = 400;
    options.url = '/_Layouts/Test/Test.aspx';
    options.dialogReturnValueCallback = OnPopClosed;
    SP.UI.ModalDialog.showModalDialog(options);
}
function OnPopClosed(test) {

    var range = RTE.Cursor.get_range();
    range.deleteContent();
    var selection = range.parentElement();
    if (!selection) {
        return;
    }

    range.insertNode(elem);
    RTE.Cursor.get_range().moveToNode("test");
    RTE.Cursor.update();

    SP.UI.ModalDialog.commonModalDialogClose(1, "test");
}
4

1 回答 1

1

将 RTE 操作放在SP.SOD.executeOrDelayUntilScriptLoaded中,以便在加载包含它的文件时执行指定的函数(在您的情况下sp.ui.rte.js):

ExecuteOrDelayUntilScriptLoaded(RTEActions, "sp.ui.rte.js");

例子:

function RTEActions()
{
    var range = RTE.Cursor.get_range();
    //Remaining code goes here...
    SP.UI.ModalDialog.commonModalDialogClose(1, "test");
}

然后像这样声明对话框处理程序:

function OnPopClosed() {
   ExecuteOrDelayUntilScriptLoaded(RTEActions, "sp.ui.rte.js");
}
于 2013-09-04T17:14:40.137 回答