2015-12-30 101 views
2

我正在为Gmail设计一个Chrome扩展。在这我想获得选定/突出显示的文字。我尝试了以下代码:获取选中/突出显示的文本html在gmail撰写邮件区域

if (!window.x) { 
     x = {}; 
    } 

    x.Selector = {}; 
    x.Selector.getSelected = function() { 
     var t = ''; 
     if($('.compose-container').getSelection){ 
      t = $('.compose-container').getSelection(); 
      alert(t); 
     } else if (window.getSelection) { 
      t = window.getSelection(); 
     } else if (document.getSelection) { 
      t = document.getSelection(); 
     } else if (document.selection) { 
      t = document.selection.createRange().text; 
     } 

     return t; 
    } 

它不会给我选择的撰写邮件的文本。 请帮我一把。

+0

可能需要使用rangy https://github.com/timdown/rangy –

回答

0

按gRenzFries回答,我的代码相同,由他提供的链接。但是在代码中添加一些细节以将其粘贴到文本框中。

代码复制文本:

var emailLink = document.querySelector('.gmail_default'); 
var range = document.createRange(); 
range.selectNode(emailLink); 
window.getSelection().addRange(range); 

try { 
    // Now that we've selected the anchor text, execute the copy command 
    var successful = document.execCommand('copy', true); 
} catch(err) { 
} 

代码将其粘贴在文本框:

$('#text-to-display').val(""); //reset textbox value 
$('#text-to-display').focus(); //set focus to textbox 
document.execCommand("Paste"); 

此代码的工作就如同预期。

0

您将需要使用copy命令来实现此目的。

var copyText = document.execCommand('copy'); 

基本上它会复制浏览器中的任何文本选择。

你可以看看这个link它是如何充分利用

+0

嘿谢谢。它只将数据复制到剪贴板,但我想在文本框中显示选定的文本。如果我使用Ctrl + v命令,我正在复制文本,但是我想在没有按Ctrl + v的情况下点击它。可能吗? – Apb