wysihtml5 没有明确地进行这种转换。这是它为表示锚标记而创建的 DOM 对象的奇怪行为的结果。基本上,anchor.href
不一定anchor.getAttribute('href')
返回相同的东西。
这是一个您可以在 Javascript 控制台上执行的示例,您可以自己查看:
var anchor = document.createElement('a');
anchor.setAttribute('href', '#foo');
console.log(anchor.href); //prints anchor.baseURI + '#foo'
console.log(anchor.getAttribute('href')); //prints '#foo'
无论如何,我认为这是 wysihtml5 中的一个错误。据我所知,您只需要更改源代码中的两行即可修复它。在 Github 上查看我的分叉:https ://github.com/b3nj4m/wysihtml5/commit/c14d746b2b192b043673d97f79f3f61c23908f8d
编辑:关于href
在原始 html -> 作曲家视图转换期间被剥离的属性,这是由于解析器规则。我认为处理这个问题的最好方法是添加一个新规则not_empty
,并将其用于href
.
例如
"a": {
"check_attributes": {
"href": "url"
},
//...
}
变成
"a": {
"check_attributes": {
"href": "not_empty"
},
//...
}
然后你添加一个not_empty
规则src/dom/parse.js
var attributeCheckMethods = {
not_empty: function(attributeValue) {
return attributeValue || null;
},
//...
};
请参阅此处的更改src/dom/parse.js
:https ://github.com/b3nj4m/wysihtml5/commit/0ef0dad5f0457266057d7e14df42dafe987bdb69#L2R374