stripTags()を使用して貼り付けた文字列からすべてのHTMLを取り除くコードを実装しました。私の次の目標は、いくつかのタグに白いフラグを付けることです。そのため、関数を拡張するために.wrap()を使って 'paste'イベントで無視されます。prototypejsのstripTags()関数でいくつかのタグをスキップ
私はフレームワークとしてprototype.jsを使用しており、フレームワークとjavascriptの両方を学ぶという苦労を徐々に克服してきましたが、この問題は少しばかりの障害を示しています。
私はちょっと調べたところ、2つの素晴らしいソリューションのように見えましたが、正しく実装していないようです。 見つかりソリューション: http://perfectionkills.com/wrap-it-up/(削除するタグを指示する機能) と http://pastebin.com/xbymCFi9(タグが維持できるようにする機能)
私はかなりコピーして、後者から貼り付け。 コードから 'br'を引くと、正規表現は無視され、すべてのhtmlが削除されます。私がそれを残すと、何も貼り付けられません。
私は一緒につなぎました(これを理解できないのは馬鹿げています!)。
String.prototype.stripTags = String.prototype.stripTags.wrap(
function(proceed, allowTags) {
if (allowTags) {
if (Object.isString(allowTags)) allowTags = $w(allowTags)
this.gsub(/(<\/?\s*)([^\s>]+)(\s[^>]*)?>/, function(match) {
if (allowTags.include(match[2].toLowerCase()))
return match[1] + match[2] + match[3] + '>'
})
} else {
// proceed using the original function
return proceed();
}
});
WysiHat.Commands.promptLinkSelection = function() {
if (this.linkSelected()) {
if (confirm("Remove link?"))
this.unlinkSelection();
} else {
var value = prompt("Enter a URL", "http://www.alltrips.com/");
if (value)
this.linkSelection(value);
}
}
document.on("dom:loaded", function() {
var editor = WysiHat.Editor.attach('event_desc');
var toolbar = new WysiHat.Toolbar(editor);
editor.observe("paste", function(event) {
var el = $(this);
setTimeout(function() {
var pText = el.innerHTML.stripTags('br');
//alert(pText);
$('event_desc_editor').update(pText);
$('event_desc').setValue(pText);
}, 0);
});
(あなたは37Signals社のテキストエディターからWysiHatコードを認識することができる)
注:アラートがコメントアウト見ることができます。私がptextに注意を払うと、私は「未定義」を返します。
私はまだコメント/観測/私のコーディング決定にberatingを聞いて興奮していたが! – abigwonderful