2012-01-05 7 views
0

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に注意を払うと、私は「未定義」を返します。

答えて

0

だから私は上に与えられ、正規表現のソリューションに移動しました:

el.innerHTML.replace(/<(?!\s*\/?\s*p\b)[^>]*>/gi,'') 
+0

私はまだコメント/観測/私のコーディング決定にberatingを聞いて興奮していたが! – abigwonderful

関連する問題