0

Я пытался скопировать некоторые данные с веб-страницы, и я использовалКопирование данных с расширением веб-страницы хромированной

window.getSelection().toString(); 

отлично работает в большинстве случаев, но если есть кадр или фантазии сайт или пытаться копировать из google hangout (внутри gmail), он не будет копировать то, что выбрано, и я попытался с document.getSelection также, но не повезло. Любой знает, как мы можем копировать данные с веб-страницы? Мой полный код:

chrome.tabs.executeScript(tab.id, {code: 'var dataToSend;dataToSend= window.getSelection().toString(); ' +'chrome.runtime.sendMessage({ text: dataToSend });'}); 

Любая помощь очень ценится.

Update Добавлен некоторый минимальный код повторно создать этот вопрос background.js

function genericOnClick(info, tab) 
{ 
    chrome.tabs.executeScript(tab.id, { 
     code: 'var dataToSend;dataToSend=\"\";dataToSend= window.getSelection().toString(); ' + 
      'chrome.runtime.sendMessage({ text: dataToSend });' 
    }); 
    chrome.runtime.onMessage.addListener(function (msg) { 
    if (msg.text !== undefined) { 
     alert(msg.text); 
     } 
    }); 
} 

var title = "My Menu"; 
chrome.contextMenus.create({"title": title, "contexts":["selection"],"onclick": genericOnClick}); 

manifest.json

{ 
    "name"     : "Test Copy", 
    "version"    : "0.1", 
    "manifest_version" : 2, 
    "permissions"   : [ 
    "contextMenus", 
    "tabs", 
    "activeTab" 
    ], 
    "background"    : { 
    "scripts" : ["background.js"] 
    }, 
    "content_scripts"  : [{ 
    "matches" : ["http://*/*", "https://*/*"], 
    "js"   : ["background.js"], 
    "run_at"  : "document_end", 
    "all_frames" : true 
    }] 
} 

Он работает в большинстве сайта не будут работать сайты с таких как http://help.autodesk.com/cloudhelp/2015/ENU/Maya-Tech-Docs/CommandsPython/

ответ

-1

Основано на document , начиная с Chrome 43, разработчики теперь могут программно запускать для копирования и вырезания действий с использованием 'document.execCommand (' copy ')' и 'document.execComand (' cut ')' в любое время.

Ваше приложение/расширение должно объявить clipboardWrite: https://developer.chrome.com/extensions/permissions

Вы можете вызвать «document.execCommand (» копировать «)» после того, как вы манипулировали «window.selection», чтобы указать на данные, которые вы хотите скопировать.

Вот ссылка на полное руководство о том, как это сделать: https://developers.google.com/web/updates/2015/04/cut-and-copy-commands

Примечания: Копирование ограничение безопасности каждого браузера. Это дыра в безопасности, если на каком-либо веб-сайте разрешено принимать данные.

+0

Это не работало, и я в конечном итоге использовал diff-решение – Achayan

+0

Привет, вы решили проблему? –

0
chrome.tabs.query({ 
     "active": true, 
     "currentWindow": true  
     }, function (tabs) { 
     chrome.tabs.sendMessage(tabs[0].id, { 
      "functiontoInvoke": "getSelectedDataFromPage" 
     }); 
     }); 
    chrome.runtime.onMessage.addListener(function (msg) { 
    if (msg.selText !== undefined && msg.selText != "") { 
     copyToNext(msg.selText); 
     } 
    }); 

Из моего фона сценария я посылаю мой content_script и внутри моего скрипта содержания window.getSelection работает, потому что мы можем добавить all_frame истины, которая будет работает где каждый.

Смежные вопросы