2

我正在使用 wysithtml5 编辑器,但用户报告了很多添加链接的问题。用户想要将任何他们想要的内容添加到 href 属性中。但是,当在添加链接时单击“确定”时,它会通过某种回调来修改它。

例如用户想要添加一个锚标签:

#moo

将输入的链接是文档 url,后跟 ancors,所以它最终看起来像这样:

http://stackoverflow.com/#moo

如果他们尝试添加液体标签,也会发生同样的情况,例如:

{{name}}

变成……</p>

http://stackoverflow.com/84748/%7B%7Bname%7D%7D

无论如何要修改 wysithtml5,使其不通过修改 href 属性的回调?我尝试从解析器规则中删除/修改 checkAttributes 但这没有任何效果。还有其他处理 href 的东西。

谢谢!

4

1 回答 1

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

编辑:关于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.jshttps ://github.com/b3nj4m/wysihtml5/commit/0ef0dad5f0457266057d7e14df42dafe987bdb69#L2R374

于 2013-08-10T18:29:53.500 回答