簡體   English   中英

從網頁Chrome擴展程序復制數據

[英]Copy Data from webpage chrome extension

我正在嘗試從網頁中復制一些數據,而我正在使用

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 });'});

任何幫助,不勝感激。

更新添加了一些最少的代碼來重新創建問題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/

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 true,從而在任何地方都可以工作。

從Chrome 43開始,基於文檔 ,開發人員現在可以隨時使用'document.execCommand('copy')''document.execComand('cut')'以編程方式觸發復制和剪切操作。

您的應用程序/擴展名必須聲明剪貼板寫: https : //developer.chrome.com/extensions/permissions

操作完“ window.selection”以指向要復制的數據后,可以調用“ document.execCommand('copy')'

以下是有關操作方法的完整指南的鏈接: https : //developers.google.com/web/updates/2015/04/cut-and-copy-commands

注意 :復制是每個瀏覽器的安全限制。 如果允許任何網站獲取數據,這是一個安全漏洞。

暫無
暫無

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

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