2

私は wysithtml5 エディターを使用していますが、リンクの追加に関する多くの問題がユーザーから報告されています。ユーザーは、必要なものを href 属性に追加したいと考えています。ただし、リンクを追加するときに「OK」をクリックすると、何らかのコールバックが実行され、変更されます..

たとえば、ユーザーはアンカー タグを追加したいと考えています。

#moo

入力されるリンクはドキュメントの URL の後にアンカーが続くため、最終的には次のようになります。

http://stackoverflow.com/#moo

たとえば、液体タグを追加しようとすると、同じことが起こります。

{{name}}

…</p>

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

href 属性を変更したこのコールバックを通過しないように wysithtml5 を変更する方法はありますか? パーサー ルールから 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 のバグだと思います。私が知る限り、修正するにはソースの 2 行を変更するだけで済みます。Github で私のフォークを参照してください: https://github.com/b3nj4m/wysihtml5/commit/c14d746b2b192b043673d97f79f3f61c23908f8d

編集:href生のhtml-> composerビュー変換中に取り除かれる属性に関して、これはパーサールールによるものです。これを処理する最善の方法は、 のような新しいルールを追加し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ここへの変更を参照してください。

于 2013-08-10T18:29:53.500 に答える