在XML模式下运行的CodeMirror有一种方法可以读取光标位置处标记的所有属性吗?
光标处的标记可以通过
确定 var cur = cm.getCursor(),
token = cm.getTokenAt(cur);
实施例:
陈述&#34; <mytag id="1" name="Test"/>
&#34;可能导致这个:
{
id: "1",
name: "Test"
}
感谢您的任何建议。
答案 0 :(得分:0)
这可能对某人有帮助!
cm.on("cursorActivity", function () {
var cur = cm.getCursor(),
tagList = [
"control",
"fql",
"text"
],
range = cm.getViewport(),
attributes = {};
range.from = Math.min(range.from, cur.line);
range.to = Math.max(cur.line + 1, range.to);
var match = CodeMirror.findMatchingTag(cm, cur, range);
if (match && match.at === "open" && tagList.indexOf(match.open.tag.toLowerCase()) > -1) {
var doc = cm.getDoc(),
tagLine = doc.getRange(match.open.from, match.open.to, false).join(""),
re = /(\S+)\s*?=\s*(['"])(.*?|)\2/g,
m;
while ((m = re.exec(tagLine)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
attributes[m[1]] = m[3];
}
console.log(attributes);
}
});