firepad と codemirror を使用してテキスト エディターを作成しようとしていますが、ページの読み込み時にすべてが完全に機能しますが、ボタンのクリック時にモードを変更しようとすると、関数が呼び出されますが、
codemirror.setOption('mode',val);//should change mode
CodeMirror.autoLoadMode(editor, mode);//should reload codemirror
動作しないようです。本体の onload イベントで次のコードを呼び出しています (完全に機能します)。
var firepadRef = getExampleRef();
codeMirror = CodeMirror(document.getElementById('firepad-container'), {
lineNumbers: true,
mode: 'javascript'
});
var firepad = Firepad.fromCodeMirror(firepadRef, codeMirror, {
defaultText: '// Welcome'
});
function getExampleRef() {
var ref = database.ref('Firepad');
var hash = window.location.hash.replace(/#/g, '');
if (hash) {
ref = ref.child(hash);
} else {
ref = ref.push(); // generate unique location.
window.location = window.location + '#' + ref.key;
}
if (typeof console !== 'undefined') {
console.log('Firebase data: ', ref.toString());
}
return ref;
}
ボタンクリックイベントで次のコードを呼び出しています(ここで問題があります!):
console.log('Button Clicked');
CodeMirror.modeURL = "https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.40.0/mode/%N/%N.js";
var editor = CodeMirror(document.getElementById('firepad-container'), {
lineNumbers: true
});
console.log("started changing");
var val ="xml",mode,spec;
mode=spec=val;
editor.setOption("mode", spec);//isn't changing mode!!
CodeMirror.autoLoadMode(editor, mode);//isn't reloading editor!!
これは、コード (関連するもの) を縮小したサンプルにすぎません。
モードのリロードとコードミラーを使用したfirebaseのリソースとして、次を使用しています。
https://codemirror.net/demo/loadmode.html#
呼び出されるスクリプトとスタイルシートは次のとおりです (関連するもののみ)。
<link rel="stylesheet" href="codemirror-dark.css">
<link rel="stylesheet" href="https://cdn.firebase.com/libs/firepad/1.4.0/firepad.css">
<script src="https://www.gstatic.com/firebasejs/5.0.4/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/5.2.0/firebase-database.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.40.0/codemirror.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.40.0/addon/mode/loadmode.js"></script>
<script src="https://cdn.firebase.com/libs/firepad/1.4.0/firepad.min.js"></script>
私は Firefox を使用していますが、開発者コンソールにエラーはありません (変更もリロードもしていません)。それで、私は何が欠けていますか?? 前もって感謝します。