ACEのエディターインスタンスをHTMLエレメントから再取得する

(コメント)

Django-ACE で ACE を使ってて、Ctrl + S ( Command + S )で保存のショートカットキーを使いたかった。

Django-ACE は、 widget.js で 

editor = ace.edit(div)

こんな感じで、editor インスタンスを作ってるけど、function内のローカル変数なので function外からはアクセスできない。

そんな時は、div.env.editor に参照があるのでアクセスできる。

Django Admin で ACE を使っている場合、editor への参照へのアクセスを jQuery で書くと

$('div.django-ace-widget')[0].firstChild.env.editor

こんな感じ。

Ctrl + S ( Command + S ) のショートカットをバインドするには

$('div.django-ace-widget')[0].firstChild.env.editor.commands.addCommand({
Name : "save",
bindKey: {
win : "Ctrl-S",
mac : "Command-S"
},
exec: function(editor) {
alert('Save!');
}
});

このように書ける。

Django の Admin 用 JS にするとこんな

// Admin ACE Save
$(function () {
setTimeout(function () {
var aces = $('div.django-ace-widget');
if (!aces.length) {
return;
}
var editor = aces[0].firstChild.env.editor;
if (!editor) {
return;
}
var continueButton = $('input[type="submit"][name="_continue"]');
if (!continueButton.length) {
return;
}

editor.commands.addCommand({
Name: "save",
bindKey: {
win: "Ctrl-S",
mac: "Command-S"
},
exec: function (editor) {
continueButton.click();
}
});
}, 2000);
});

現在未評価

コメント

最近のツイート

  • 漫画全巻ドットコム@ポイント最大15倍!

    漫画全巻ドットコム@ポイント最大15倍! @mangazenkan

    ytyng

    おはようございます!さぁ、いよいよ始まります!加藤浩次さん司会のがっちりマンデー!!が、はじまります!みなさん、うちの濱田、ダンディーが、映ります! https://t.co/YQj2zxafqe
    3 週間, 1 日 前

  • ytyng

    ytyng @ytyng

    漫画全巻ドットコム またテレビ出ます! がっちりマンデー。日曜日放送です。サーバ増やして待ってます! @mangazenkan https://t.co/cFVryVA7kG https://t.co/ia5rUMIIfw
    4 週間 前

  • ytyng

    ytyng @ytyng

    やばい、機能がリリースされない! タイムゾーンか? サマータイム設定になってるのか? とか焦ってたら、リリース日になってなかっただけだった。今日月末じゃん。月初じゃないじゃん。1人で焦ってたけど結果1日得した気分
    2 ヶ月, 3 週間 前