我试图从网页上复制一些数据而我正在使用
chrome.tabs.executeScript(tab.id, {code: 'var dataToSend;dataToSend= window.getSelection().toString(); ' +'chrome.runtime.sendMessage({ text: dataToSend });'});
在大多数情况下工作正常,但如果有框架或花哨网站或从谷歌环聊(gmail内部)尝试复制,它将不会复制所选内容,我也尝试使用document.getSelection,但没有运气。任何人都知道我们可以从网页上复制数据吗?我的完整代码就是这个
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});
任何帮助都非常感激。
更新 添加了一些最小的代码来重新创建问题 background.js
{
"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
}]
}
的manifest.json
if (maintainerIds != null && maintainerIds.Count > 0)
{
foreach (string maintainerId in maintainerIds)
{
var maintainer = new User() { Id = maintainerId };
users.Attach(maintainer);
newPackage.Maintainers.Add(maintainer);
}
}
它适用于大多数网站,不适用于http://help.autodesk.com/cloudhelp/2015/ENU/Maya-Tech-Docs/CommandsPython/
等框架的网站答案 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,这将适用于每个地方。
答案 1 :(得分:-1)
基于document,从Chrome 43开始,开发人员现在可以使用'document.execCommand('copy')'和'以编程方式触发复制和剪切操作document.execComand('cut')'随时。
您的app / extension必须声明clipboardWrite:https://developer.chrome.com/extensions/permissions
操作' window.selection'指向要复制的数据后,可以调用'document.execCommand('copy')'。
以下是有关如何操作的完整指南的链接:https://developers.google.com/web/updates/2015/04/cut-and-copy-commands
注意:复制是每个浏览器的安全限制。如果允许任何网站获取数据,这是一个安全漏洞。