热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Chrome扩展插件开发

开发了一个简单的谷歌浏览器小插件---百度精简搜索先来看下插件效果图:插件功能很简单就是在网页里实现划词来进行直接百度搜索,过程如下:项目文件结构如下:

开发了一个简单的谷歌浏览器小插件 --- 百度精简搜索

先来看下插件效果图:

"default_title": "\u6253\u5F00\u767E\u5EA6"
},
"content_scripts": [ {
"js": [ "detector.js" ],
"matches": [ "http://*/*", "https://*/*" ]
} ],
"content_security_policy": "script-src 'self' 'unsafe-eval' https://ssl.google-analytics.com; object-src 'self'",
"description": "Quick access to Baidu \u7CBE\u7B80\u7248\uFF0C\u5212\u8BCD\u53F3\u952E\u83DC\u5355\u5FEB\u901F\u641C\u7D22",
"icons": {
"128": "logo128.png",
"48": "logo48.png",
"16": "logo16.png"
},
"manifest_version": 2,
"name": "\u767E\u5EA6\u7CBE\u7B80\u641C\u7D22",
"permissions": [ "contextMenus", "tabs", "http://*/*", "https://*/*", "notifications", "webRequest", "webRequestBlocking" ],
"update_url": "https://clients2.google.com/service/update2/crx",
"version": "1.0"
}


background.js:


var win = null,
text = '',
search_text = null;
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendMessage(tab.id, {selected: true}, function(response) {
if (!response) return;
var search_text = response.data;
if(search_text.length == 0 && win) {
chrome.windows.update(win.id, { focused: true });
} else if(search_text.length > 1) {
toSearch(search_text);
} else {
toSearch();
}
});
if (tab.url.indexOf('chrome://') == 0) toSearch();
});
});

var toSearch = function(_text) {
text = _text;
var url = 'http://www.baidu.com';
if(text && !text.status && text != ''){
url = 'http://www.baidu.com/s?wd=' + text;
}
chrome.tabs.query( {'active' : true}, function(tabs){
chrome.tabs.create({url:url,index: tabs[0].index + 1});
})
};

chrome.windows.onRemoved.addListener(function(windowId) {
if(!win) return;
if(windowId = win.id)
win = null;
});

chrome.contextMenus.onClicked.addListener(function clickMenuToSearch(info, tab){
selectedText = info.selectionText;
if(selectedText.length == 0 && win) {
chrome.windows.update(win.id, { focused: true });
} else if(selectedText.length > 0) {
toSearch(selectedText);
} else {
toSearch();
}
});

chrome.contextMenus.create({"title": "用 Baidu 搜索 '%s'", "contexts": ["selection"], "id": "用 Baidu 搜索 '%s'"});


detector.js:


var detector = {
addListen: function() {
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
var selected = detector.getSelectedText();

if (request.selected) {
sendResponse({data: selected});
}
});
},
getSelectedText: function() {
var txt = 'nothing';
if (window.getSelection){
txt = window.getSelection().toString();
} else if (document.getSelection) {
txt = document.getSelection().toString();
} else if (document.selection) {
txt = document.selection.createRange().text;
}
return txt;
}
};

detector.addListen();


开发好代码后就可以到Chrome浏览器的扩展程序页面,开启开发者模式来进行调试以及打包生成crx文件进行安装。

点击下载打包好的baidu.crx文件



推荐阅读
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文详细介绍了MicroATX(也称Mini ATX)和MATX主板规格,探讨了它们的结构特点、应用场景及对电脑系统成本和性能的影响。同时,文章还涵盖了相关操作系统的实用技巧,如蓝牙设备图标删除、磁盘管理等。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 爱奇艺视频下载指南
    随着百度在视频领域的不断扩展,爱奇艺的内容库日益丰富,涵盖了大量新番动画、电影、电视剧和综艺节目。本文将详细介绍如何通过爱奇艺客户端下载视频,帮助用户轻松实现离线观看。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • andr ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
author-avatar
众神痴梦_325
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有