如何使用Google Chrome扩展更改所选文本的CSS
How to change CSS of selected text using Google Chrome Extension
我正在为Chrome浏览器做一个扩展,它使用contextMenu来更改所选文本的CSS。
但我无法访问HTML结构,即所选文本的parentNode,因为在本例中我可以很容易地访问。
var selection = window.getSelection();
如果在浏览器中默认使用,这将返回所选文本的parentNode,我可以稍后使用它来更改CSS。
如何使用Chrome浏览器扩展实现这一点?
由于Chrome不允许您使用上下文菜单与单击的元素交互,您必须创建一个内容脚本,该脚本存储页面上最后一个右键单击的元素,因此当用户右键单击任何元素时,您都可以使用它。
首先,您必须创建一个save_last_element.js
内容脚本,如下所示:
var LAST_SELECTION,
LAST_ELEMENT;
document.body.addEventListener('contextmenu', function(e) {
LAST_SELECTION = window.getSelection();
LAST_ELEMENT = e.target;
// this will update your last element every time you right click on some element in the page
}, false);
然后将其添加到manifest.json
:中
"permissions": ["*://*/*"],
"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["/path/to/save_last_element.js"],
"run_at": "document_idle",
"all_frames": true
}
]
现在,在页面中注入脚本时,您将能够使用LAST_SELECTION
和LAST_ELEMENT
变量来引用最后一个右键单击的元素,并编辑其CSS或任何您想要的内容。
在你的background.js
中,你应该这样做:
function handler(info, tab) {
// here you can inject a script inside the page to do what you want
chrome.tabs.executeScript(tab.id, {file: '/path/to/script.js', allFrames: true});
}
chrome.runtime.onInstalled.addListener(function() {
chrome.contextMenus.create({
"title": "Some title",
"contexts": ["all"],
"documentUrlPatterns": ["*://*/*"],
"onclick": handler
});
});
请注意,上下文菜单是在chrome.runtime.onInstalled
侦听器中注册的,因为上下文菜单注册是持久的,只需要在安装扩展时进行。
最后,在您的script.js
文件中:
if (LAST_SELECTION) {
// do whatever you want with the information contained in the selection object
}
if (LAST_ELEMENT) {
// do whatever you want with the element that has been right-clicked
}
相关文章:
- 使用CSS/JavaScript更改剑道图工具提示文本颜色
- CSS/HTML:更改文本的值并在悬停时从中心展开
- CSS无法处理文本区域
- 为未标记的文本添加CSS样式
- CSS-在文本中滑动
- 不使用自定义CSS或HTML(使用框架方法)的角度材质文本输入或文本区域标签大小
- 如何使用jquery更改文本输入的css
- 有CSS问题:can't将文本放置在选择框的右侧
- 检查所选文本是否在给定的CSS类中
- 如何在android中使用HTML/CSS赋予文本渐变颜色
- javascript或css:如何隐藏后面跟着句点前缀的任何数字"1.文本”"2.文本“"
- 如何使用jquery/js/css逐步突出显示一段文本
- 文本框的 CSS 文本选择覆盖
- Css链接在文本中
- 1.9像素的文本大小显示为1px-Raphael SVG,CSS,Javascript
- 输入占位符文本转换CSS样式
- 重置时输入字段文本css
- 悬停图像链接,更改文本css
- 位于背景图像中心的文本[CSS]
- 用Javascript将文本CSS解析为JSON