过滤掉div和oncopy的HTML标签onpaste



我有一个可编辑的DIV在我的网站发送论坛消息。人们可以编辑他们的消息(粗体,斜体,下划线,添加链接和更多)

但是我想当有人粘贴或删除(-删除是不必要的,但粘贴它是)他们的文本,我希望它去没有HTML标签的DIV -干净,只是文本。(比如如果有人想把文字设置成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应用相同的过滤器。

谢谢

我认为有两种方法可以做到这一点:

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;
}

这个方法的问题是你失去了插入符号的位置…

最新更新