5

我正在尝试编写一个 JavaScript 脚本来添加到greasemonkey,它在元素之后添加一个按钮。此按钮的 onClick 应将父元素文本复制到键盘。我已经看到很多将已选择的文本复制到剪贴板的示例,例如:

    <SCRIPT LANGUAGE="JavaScript">
    <!-- Begin
    function copyit(theField) {
    var selectedText = document.selection;
    if (selectedText.type == 'Text') {
    var newRange = selectedText.createRange();
    theField.focus();
    theField.value = newRange.text;
    } else {
    alert('Alert: Select The text in the textarea then click on this button');
    }
    }
    // End -->
    </script>
    <input onclick="copyit(this.form.text_select)" type="button" value="Click Here to Copy the Highlighted Text" name="copy_button">

在这里找到。

我还发现您可以在输入元素中选择文本。我尝试将这两种技术以及许多其他技术结合起来,但还没有可行的解决方案。我什至不确定为什么上面的代码会复制到剪贴板。有人对此有解决方案吗?

4

2 回答 2

5

如果您花时间阅读完整的文章,作者说这不适用于 Firefox...
实际上,我认为它甚至不适用于 IE,因为它与剪贴板无关!

有一种使用 Flash 的技术,因为默认情况下,Firefox 出于安全原因禁止访问剪贴板。
否则,复制的经典方法是:

var tc = textToCopy.replace(/\n\n/g, '\n');
if (window.clipboardData) // IE
{
  window.clipboardData.setData("Text", tc);
}
else
{
  unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  const clipboardHelper = Components.classes
      ["@mozilla.org/widget/clipboardhelper;1"].
      getService(Components.interfaces.nsIClipboardHelper);
  clipboardHelper.copyString(tc);
}

启用复制后(对于给定站点)。

于 2008-12-08T00:04:46.577 回答
1

你确定你的例子有效吗?它不在我的浏览器中。但请查看以下页面: http: //www.jeffothy.com/weblog/clipboard-copy/

于 2008-11-25T09:07:07.017 回答