codemirror.setOption('mode',val) 不工作
codemirror.setOption('mode',val) isnt working
我正在尝试使用 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!!
这只是代码(相关代码)的一个小型示例。
我将以下资源用作模式重新加载和带有 codemirror 的 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,开发人员控制台上没有错误(只是既没有更改也没有重新加载)。
那我错过了什么??
提前致谢。
codemirror 不接受“xml”作为模式类型。您要查找的是“application/xml”或“text/xml”。
根据 CodeMirrors 站点上的文档,您需要对文件名字符串的扩展名调用 codemirror.findModeByExtension 以获取信息对象。你先调用 CM_OBJ.setOption("mode",info.mime),然后调用 CodeMirror.autoLoadMode(editor,info.mode) 如果你想使用更简单和更不具体的输入字符串。
这对我适用于 firefox 和 chrome 检查页面。
来源:https://codemirror.net/demo/loadmode.html
我正在尝试使用 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!!
这只是代码(相关代码)的一个小型示例。
我将以下资源用作模式重新加载和带有 codemirror 的 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,开发人员控制台上没有错误(只是既没有更改也没有重新加载)。 那我错过了什么?? 提前致谢。
codemirror 不接受“xml”作为模式类型。您要查找的是“application/xml”或“text/xml”。
根据 CodeMirrors 站点上的文档,您需要对文件名字符串的扩展名调用 codemirror.findModeByExtension 以获取信息对象。你先调用 CM_OBJ.setOption("mode",info.mime),然后调用 CodeMirror.autoLoadMode(editor,info.mode) 如果你想使用更简单和更不具体的输入字符串。
这对我适用于 firefox 和 chrome 检查页面。 来源:https://codemirror.net/demo/loadmode.html