<html>
<head>
<title>onpaste event example</title>
</head>
<body>
<h3>Play with this editor!</h3>
<div>
<span style="color:red">Copy this text.</span>
</div>
<textarea id="editor" rows="3" cols="80">
Try pasting text into this area!
</textarea>
<div id="editdiv" contenteditable="true">
..
</div>
<script type="text/javascript">
//Firefox下Clipboard的读写js脚本
/**************************************************
将字符串maintext复制到剪贴板
**************************************************/
function setClipboard(maintext) {
if (window.clipboardData) {
return (window.clipboardData.setData("Text", maintext));
}
else if (window.netscape) {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
if (!clip) return;
var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
if (!trans) return;
trans.addDataFlavor('text/unicode');
var str = new Object();
var len = new Object();
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
var copytext=maintext;
str.data=copytext;
trans.setTransferData("text/unicode",str,copytext.length*2);
var clipid=Components.interfaces.nsIClipboard;
if (!clip) return false;
clip.setData(trans,null,clipid.kGlobalClipboard);
return true;
}
return false;
}
/**************************************************
返回剪贴板的内容
**************************************************/
function getClipboard() {
if (window.clipboardData) {
return(window.clipboardData.getData('Text'));
}
else if (window.netscape) {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
if (!clip) return;
var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
if (!trans) return;
trans.addDataFlavor('text/unicode');
clip.getData(trans,clip.kGlobalClipboard);
var str = new Object();
var len = new Object();
try {
trans.getTransferData('text/unicode',str,len);
}
catch(error) {
return null;
}
if (str) {
if (Components.interfaces.nsISupportsWString) str=str.value.QueryInterface(Components.interfaces.nsISupportsWString);
else if (Components.interfaces.nsISupportsString) str=str.value.QueryInterface(Components.interfaces.nsISupportsString);
else str = null;
}
if (str) {
return(str.data.substring(0,len.value / 2));
}
}
return null;
}
function log(txt) {
document.getElementById("log").appendChild(document.createTextNode(txt + "\n"));
}
function pasteIntercept(evt) {
var txt = getClipboard();
setClipboard(txt);
log("Pasting!");
}
document.getElementById("editor").addEventListener("paste", pasteIntercept, false);
document.getElementById("editdiv").addEventListener("paste", pasteIntercept, false);
</script>
<h3>Log</h3>
<textarea rows="15" cols="80" id="log" readonly="true"></textarea>
</body>
</html>
分享到:
相关推荐
需要注意的是,由于`window.clipboardData`是IE浏览器特有,对于其他浏览器如Chrome、Firefox、Safari等,我们需要使用`Clipboard API`来实现类似功能。`Clipboard API`提供了`navigator.clipboard.readText()`和`...
- 为了实现更好的兼容性,你需要根据浏览器的不同来选择合适的 `getData` 方法,例如 `window.clipboardData.getData("Text")` 用于 IE,而 `e.clipboardData.getData("text/plain")` 适用于 Firefox 和 Chrome。...
window.clipboardData.clearData(); window.clipboardData.setData("Text", txt); } ``` 这里直接使用`window.clipboardData`对象来清除原有剪贴板内容,并设置新的文本数据。 对于Firefox,情况稍微复杂一些。...
对于IE,可以通过`window.clipboardData`对象的`getData`方法来直接获取,而对于Firefox,需要使用`nsIClipboard`和`nsITransferable`接口来访问剪贴板内容。 对于不支持直接访问剪贴板的浏览器,一个常见的解决...
你可以使用`window.clipboardData.setData('Text', data)`来写入数据,以及`window.clipboardData.getData('Text')`来读取数据。这个API相对简单,但仅适用于IE浏览器。 3. **Firefox的剪切板支持**: Firefox使用...
在旧版本的Internet Explorer浏览器中,可以通过`window.clipboardData`直接访问该对象,而在其他现代浏览器(如Chrome、Firefox、Safari)中,我们需要使用`Clipboard API`,它遵循了W3C的工作草案标准。...
event.clipboardData.setData('text/plain', data.getData('text/plain')); event.preventDefault(); ``` 6. **处理浏览器兼容性**:需要注意的是,不同的浏览器可能对`clipboard`API的支持程度不同,所以需要进行...
- **剪贴板操作**:`clipboardData` 对象提供了对系统剪贴板的访问,允许开发者执行剪贴板操作,如清空剪贴板(`clearData("Text")`)、读取剪贴板内容(`getData("Text")`)以及设置剪贴板内容(`setData("Text", val)` ...
一种方法是使用window.clipboardData对象,此对象支持setData和getData方法,可以让我们进行复制和粘贴操作。但是这种方法只支持IE浏览器。另外一种方法是通过document对象的execCommand方法实现复制。execCommand是...
在其他现代浏览器中,如Firefox、Chrome等,应该使用`window.getSelection()`来代替。在`doit()`函数中,`document.selection.createRange()`创建了一个表示选中文本的Range对象`newT`。 2. **`Range对象`**: Range...
var usrInput = event.clipboardData.getData('Text'); for (var i = 0; i < usrInput.length; i++) { var k = usrInput.charCodeAt(i); if ((k !== 46) && (k || k > 57)) { return false; } } return true...