`
chenyuxiaoxiao
  • 浏览: 71064 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

firefox window.clipboardData.getData

    博客分类:
  • js
阅读更多
<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>
分享到:
评论

相关推荐

    javascript复制粘贴与clipboardData的使用

    需要注意的是,由于`window.clipboardData`是IE浏览器特有,对于其他浏览器如Chrome、Firefox、Safari等,我们需要使用`Clipboard API`来实现类似功能。`Clipboard API`提供了`navigator.clipboard.readText()`和`...

    js剪切板应用clipboardData实例解析

    - 为了实现更好的兼容性,你需要根据浏览器的不同来选择合适的 `getData` 方法,例如 `window.clipboardData.getData("Text")` 用于 IE,而 `e.clipboardData.getData("text/plain")` 适用于 Firefox 和 Chrome。...

    跨浏览器开发经验总结(四) 怎么写入剪贴板

    window.clipboardData.clearData(); window.clipboardData.setData("Text", txt); } ``` 这里直接使用`window.clipboardData`对象来清除原有剪贴板内容,并设置新的文本数据。 对于Firefox,情况稍微复杂一些。...

    jQuery获取剪贴板内容的方法

    对于IE,可以通过`window.clipboardData`对象的`getData`方法来直接获取,而对于Firefox,需要使用`nsIClipboard`和`nsITransferable`接口来访问剪贴板内容。 对于不支持直接访问剪贴板的浏览器,一个常见的解决...

    支持ie与FireFox的剪切板操作代码

    你可以使用`window.clipboardData.setData('Text', data)`来写入数据,以及`window.clipboardData.getData('Text')`来读取数据。这个API相对简单,但仅适用于IE浏览器。 3. **Firefox的剪切板支持**: Firefox使用...

    JS实现获取剪贴板内容的方法

    在旧版本的Internet Explorer浏览器中,可以通过`window.clipboardData`直接访问该对象,而在其他现代浏览器(如Chrome、Firefox、Safari)中,我们需要使用`Clipboard API`,它遵循了W3C的工作草案标准。...

    复制文章自动加上版权的功能实现方法(代码)

    event.clipboardData.setData('text/plain', data.getData('text/plain')); event.preventDefault(); ``` 6. **处理浏览器兼容性**:需要注意的是,不同的浏览器可能对`clipboard`API的支持程度不同,所以需要进行...

    JsDom 编程小结

    - **剪贴板操作**:`clipboardData` 对象提供了对系统剪贴板的访问,允许开发者执行剪贴板操作,如清空剪贴板(`clearData("Text")`)、读取剪贴板内容(`getData("Text")`)以及设置剪贴板内容(`setData("Text", val)` ...

    JavaScript实现复制功能各浏览器支持情况实测

    一种方法是使用window.clipboardData对象,此对象支持setData和getData方法,可以让我们进行复制和粘贴操作。但是这种方法只支持IE浏览器。另外一种方法是通过document对象的execCommand方法实现复制。execCommand是...

    JS实现根据当前文字选择返回被选中的文字

    在其他现代浏览器中,如Firefox、Chrome等,应该使用`window.getSelection()`来代替。在`doit()`函数中,`document.selection.createRange()`创建了一个表示选中文本的Range对象`newT`。 2. **`Range对象`**: Range...

    js 金额文本框实现代码

    var usrInput = event.clipboardData.getData('Text'); for (var i = 0; i &lt; usrInput.length; i++) { var k = usrInput.charCodeAt(i); if ((k !== 46) && (k || k &gt; 57)) { return false; } } return true...

Global site tag (gtag.js) - Google Analytics