有没有办法让wysithtml5的链接编辑器让用户在href标签中添加他们喜欢的东西?

时间:2013-08-02 17:39:30

标签: javascript callback href text-editor wysihtml5

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

例如,用户想要添加锚标记:

#moo

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

http://stackoverflow.com/#moo

如果他们尝试添加液体标签,例如:

,也会发生同样的情况
{{name}}

...变为

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

是否有修改wysithtml5所以它不会通过这个修改href属性的回调?我已经尝试从解析器规则中删除/修改checkAttributes但是这没有任何效果。还有一些其他处理href的东西。

谢谢!

1 个答案:

答案 0 :(得分:3)

wysihtml5没有明确地进行此转换。这是它创建的DOM对象表示锚标记的奇怪行为的结果。基本上,anchor.hrefanchor.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