我正在使用wysithtml5编辑器,但用户报告了添加链接的许多问题。用户想要将他们想要的任何内容添加到href属性中。但是,在添加链接时单击“确定”时,它会通过某种类型的回调运行修改它..
例如,用户想要添加锚标记:
#moo
将输入的链接是ancors后面的文档url,所以最终会看起来像这样:
http://stackoverflow.com/#moo
如果他们尝试添加液体标签,例如:
,也会发生同样的情况{{name}}
...变为
http://stackoverflow.com/84748/%7B%7Bname%7D%7D
是否有修改wysithtml5所以它不会通过这个修改href属性的回调?我已经尝试从解析器规则中删除/修改checkAttributes但是这没有任何效果。还有一些其他处理href的东西。
谢谢!
答案 0 :(得分:3)
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
编辑:关于在原始HTML期间被剥离的href
属性 - >作曲家视图转换,这是由于解析器规则。我认为处理此问题的最佳方法是添加not_empty
之类的新规则,并将其用于href
。
e.g。
"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