0

DIVフォーラム メッセージを送信するために、自分のサイトに編集可能なものがあります。ユーザーはメッセージを編集できます (太字、斜体、下線、リンクの追加など)

DIVしかし、誰かが貼り付けまたはドロップするとき(-ドロップは必要ありませんが、貼り付けます)、 HTMLタグなしでテキストに入れたい-クリーンでテキストのみ。(たとえば、誰かが言葉にしてテキストを200ポイントのサイズにし、それをコピーして私DIVの.

クリップボードからのテキストをスキャンして HTML タグを削除し、DIV.

<html>
<head>
<script type="text/javascript" language="javascript">

function PasteFilter()
{
//windows.clipboardData filter on paste to go here
}

function CopyFilter()
{
//windows.clipboardData filter on copy to go here
}

</script>
</head>
    <body>
        <Div class="body" onpaste="PasteFilter()" oncopy="CopyFilter">
        <!-- div content goes here.-->
        </Div>
    </body>
    </html>

COPY でも同じフィルターを適用したいと思います。

ありがとう

4

1 に答える 1

1

これを行うには2つの方法があると思います:

1) 簡単な方法 - 次のコードを PasteFilter() に挿入します。

var foo = window.clipboardData.getData('Text');
window.clipboardData.setData('Text', foo);

最初の行は clipboardData の Text 値を取得し (HTML タグは既に削除されています)、2 行目は clipboardData をプレーン テキストに設定します... (IE8 でテスト済み)

2) 他の方法 - 何らかの理由でそれがあなたにふさわしくない場合..

PasteFilter() では、短い遅延タイムアウトで別の関数をトリガーします。その関数では、DIV の innerHTML コンテンツを取得し、正規表現を実行してすべてのタグを削除します。

例:

function PasteFilter()
{
    setTimeout('foo()', 200);
}

function foo()
{
    var contents = document.getElementById("test").innerHTML;

    var new_contents = contents.replace(/(<([^>]+)>)/g, ""); // taken from http://css-tricks.com/snippets/javascript/strip-html-tags-in-javascript/

    document.getElementById("test").innerHTML = new_contents;
}

この方法の問題は、キャレットの位置が失われることです...

お役に立てれば...

于 2011-08-16T13:08:52.210 に答える