我的网站中有一个可编辑的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中使用相同的过滤器。
谢谢,
答案 0 :(得分: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;
}
这种方法的问题在于你失去了插入位置......
希望这会有所帮助......