簡體   English   中英

document.execCommand('copy')在Firefox中不適用於Codemirror textarea字段

[英]document.execCommand('copy') doesn't work in firefox for codemirror textarea field

我正在使用帶有文本區域(代碼鏡像)的自定義確認對話框,其中填充了一些文本。 由於代碼鏡像隱藏了實際的textarea元素,因此Firefox無法從隱藏的textarea字段獲取數據。 確認框的定義如下:

var confirmationDialog = MD.ui.dialogs.confirm({
    title: title,
    text: '',
    type: 'dataUri',
    dataUri: formUrl,
    position: 'center',
    buttonForward: {
        text: 'Copy',
        action: function () {
            DataGridExportDialog.CopyToClipboard("#rawXmlImpExp");
        }
    },
    buttonCancel: {
        text: 'Cancel',
        action: function () {
            confirmationDialog.close();
            confirmationDialog.destroy();
        }
    }
});

根據要求,我使用復制到剪貼板功能更新了確認按鈕功能,以便在單擊“復制”時將文本區域中的文本復制到剪貼板。 下面是copyToClipboard()。

DataGridExportDialog.CopyToClipboard = function( containerId ) {
/*var textareaData = $('#rawXmlImpExp').val();
var range = document.createRange();
range.selectNodeContents(textareaData);
window.getSelection().addRange(range);*/

var copyTextarea = document.querySelector(containerId);
copyTextarea.select();

try {
    var successful = document.execCommand('copy');
    raiseMessage('Configuration XML copied to clip board.')
} catch (err) {
    raiseWarning('Unable to copy. Please do so manually.');
}}

此實現在chrome上運行良好,但在Firefox中失敗。 我的代碼在firefox上失敗的任何想法。

在try塊中取消隱藏文本區域,在finally塊中隱藏相同的文本區域。

CopyToClipboard = function( containerId ) {
  const copyTextarea = $(containerId);
  try {
    $(copyTextarea).css('display','block');
    copyTextarea[0].select();
    document.execCommand('copy');
    raiseMessage('Configuration XML copied to clip board.');
  } 
  catch (err) {
    raiseWarning('Unable to copy. Please do so manually.');
  }
  finally {
    $(copyTextarea).css('display','none');
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM