谷歌Chrome扩展获取所选文本有时为空
Google Chrome Extension Getting Selected Text Sometimes Empty?
我正在开发小chrome扩展。
我不知道getSelection是如何在chrome扩展中工作的。
有时所选文本已加载,有时为空。为什么?
这是我的清单文件:
{
"background": {
"scripts": [
"js/pop.js"
]
},
"browser_action": {
"default_icon": "icons/icon.png",
"default_popup": "popup.html"
},
"content_scripts": [
{
"js": [
"js/contentscript.js",
"js/lib/jquery-2.1.4.min.js",
"js/lib/hi5.js"
],
"matches": [
"http://*/*",
"https://*/*",
"file://*",
"<all_urls>"
],
"run_at": "document_end",
"all_frames": true
}
],
"icons": {
"16": "icons/icon16.png",
"24": "icons/icon24.png",
"32": "icons/icon32.png",
"48": "icons/icon48.png",
"64": "icons/icon64.png",
"96": "icons/icon96.png",
"128": "icons/icon128.png"
},
"commands": {
"_execute_browser_action": {
"suggested_key": {
"chromeos": "Alt+D"
}
}
},
"name": "App",
"manifest_version": 2,
"permissions": [
"tabs",
"contentSettings",
"management",
"contextMenus",
"http://*/",
"https://*/",
"<all_urls>",
"storage",
"unlimitedStorage"
],
"update_url": "https://clients2.google.com/service/update2/crx",
"version": "1.0",
"web_accessible_resources": [
"js/lib/jquery-2.1.4.min.js"
]
}
这是我的内容脚本:
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
if (request.method == "getSelection") {
var selectedText = window.getSelection().toString();
sendResponse({data: selectedText});
}
}
);
这是我的pop.js:
document.addEventListener('DOMContentLoaded', function () {
chrome.tabs.query({active: true, windowId: chrome.windows.WINDOW_ID_CURRENT},
function (tab) {
chrome.tabs.sendMessage(tab[0].id, {method: "getSelection"},
function (response) {
var selectedTex = response.data;
if (selectedTex.length > 1) {
$("#search-basic").val(selectedTex);
}
});
});
});
这是我的popUp.html
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery Mobile: Theme Download</title>
<link rel="stylesheet" href="themes/deneme.min.css"/>
<link rel="stylesheet" href="themes/jquery.mobile.icons.min.css"/>
<link rel="stylesheet" href="./css/jquery.mobile-1.4.5.min.css"/>
<script type="text/javascript" src="./js/lib/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="./js/lib/jquery.mobile-1.4.5.min.js"></script>
<script type="text/javascript" src="./js/pop.js"></script>
</head>
<body>
<input type="search" name="search" id="search-basic" value=""/>
</body>
</html>
我认为您的问题在于获取所选文本的方式。
改为使用:
var selectedText = window.getSelection().toString();
试试其他代码:
var focused = document.activeElement;
var selectedText;
if (focused) {
try {
selectedText = focused.value.substring(
focused.selectionStart, focused.selectionEnd);
} catch (err) {
}
}
if (selectedText == undefined) {
var sel = window.getSelection();
selectedText = sel.toString();
}
相关文章:
- 无法在Chrome控制台中使用javascript将焦点和光标设置为输入文本
- 如何在 Chrome 的文本区域中“替换”选定的文本范围
- 可以't在Chrome扩展上返回所选文本
- window.clipboardData.getData(“文本”)在chrome中不起作用
- Chrome扩展:弹出操作网站上的文本框
- 阻止选择在IE中工作但不在Chrome中工作的文本
- 将变量传递到Chrome扩展中的徽章文本
- 如何使用chrome应用程序窗口动态调整文本区域的大小
- YUI富文本编辑器和Chrome中的同源策略
- Chrome显示错误与文本包装
- Chrome扩展程序获取DOM文本并在弹出窗口中显示.html然后单击按钮
- 在 Edge 和 Chrome 中使用标准日期选取器时,更改输入字段的文本颜色
- 在Chrome扩展程序中将文本替换为Treewalker
- 如何在文本框点击事件中设置文本框中字符的第一个位置---Chrome问题
- Chrome Javascript:自动点击包含特定文本的链接
- servlet pdf 在 chrome 中以文本形式出现
- Chrome 扩展程序,用于在显示文本之前替换网页和 Facebook 帖子中的文本
- 为什么 Chrome 在使用书签时更新正文而不是文本区域值
- Chrome 扩展程序输入文本问题
- Chrome 扩展程序 - 确定上下文菜单中的选择文本或页面