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

我相信有两种方法可以做到这一点:

1) 简单的方法 - 在 PasteFilter() 中插入以下代码:

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

第一行获取 clipboardData 的 Text 值(已去除 HTML 标签),第二行将 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 回答