我有一个可编辑的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;
}
这个方法的问题是你失去了插入符号的位置…