谁能告诉我为什么我无法使用windows.getSelection()。toString()在任何给定页面上获得所选文本的字符串?
该脚本在后台运行,即使我将其命名为popup.js。
我可以找到的所有内容都显示了这种变化,但是在我的代码中,它始终返回null。 我在按下快捷键组合时调用window.getSelection()。肯定选择了文本,但结果始终为空。
manifest.json
{
"name": "CM_TextDiff",
"version": "1.0",
"manifest_version": 2,
"description": "Highlight changes in two lines of text. Useful to language teachers to highlight corrections.",
"icons": {
"128": "compare128.png"
},
"background": {
"scripts": [
"popup.js"
]
},
"browser_action": {
"default_title": "highlight your corrections",
"default_popup": "popup.html"
},
"permissions": [
"tabs",
"activeTab",
"http://*/*",
"https://*/*",
"clipboardRead",
"clipboardWrite",
"contextMenus"
],
popup.js
chrome.commands.onCommand.addListener(function(command) {
console.log('Command:', command);
getSelectedText();
});
function getSelectedText(){
alert ("The text content of the selection:\n" + window.getSelection().toString ());
}
我希望它会显示一个弹出页面,其中包含在页面上选择的文本。但是,结果始终是空字符串。
答案 0 :(得分:0)
对于其他受此困扰的人:
确保在权限中具有“活动标签”。
要从活动标签中拉出选定的文本,请执行以下操作:
function getSelectedText(){
chrome.tabs.executeScript({code: 'getSelection().toString()'},
res => callback(res) //res => { alert(res[0]) });
);
}
var blah;
function callback(results){
console.log(results);
blah = results[0];
}
“等等”将在调用过程中包含选定的文本,您可以在其中使用它。
感谢wOxxOm向我指出正确的方向并给予我推动。