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 に答える