
扩展(extension)还是插件(plugin)
举些插件栗子
我希望
Chrome扩展
Chrome 扩展组成结构
每个扩展都应该包含下面的文件:
manifest.json文件
{ // 必须的字段 "name": "My Extension", "version": "versionString", "manifest_version": 2, // 建议提供的字段 "description": "A plain text description", "icons": { ... }, // 二选一,或者都不提供 "browser_action": {...}, "page_action": {...}, // 根据需要提供 "background": {...}, "content_scripts": [...],"permission":[...]...... }
browser_action
"browser_action": {
"default_icon": "images/icon19.png", // 图标
"default_title": "Google Mail", // optional; shown in tooltip
"default_popup": "popup.html" // 点击时弹出的页面
},

browser_action

page_action
"page_action": {
"default_icon": "icons/foo.png", // 图标
"default_title": "Do action", // optional; shown in tooltip
"default_popup": "popup.html" // 点击后弹出的页面
},

background
"background": {
"scripts": ["background.js"]
},
"background": {
"page": "background.html"
},
之间的关系

上图显示了安装了两个应用(扩展)的浏览器。两个应用(扩展)分别是黄色图标代表的browser action和蓝色图标代表的page action。在background.html文件里定义了browser action和javascript代码。在两个窗口里browser action都可以工作。
content_scripts
简单的说,就是在当前页面插入javascript脚本 并执行
"content_scripts": [
{
"matches": ["http://www.google.com/*"],//匹配站点注入
"css": ["mystyles.css"],
"js": ["jquery.js", "myscript.js"]
}
],
content_script
/* in background.html */
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null,
{code:"document.body.bgColor='red'"});
});
/* in manifest.json */
"permissions": [
"tabs", "http://*/*"
],
//一般来说,可以将代码放在文件里面而不是像上面那个例子那样直接注入。 可以这样写:
chrome.tabs.executeScript(null, {file: "content_script.js"});

一个content script脚本可以与所在的应用(扩展)交换消息,如上右图所示。例如,当一个content script从页面中发现一个RSS种子时,它可以发送一条消息。或者由背景页面发送一条消息,要求content script修改一个网页的内容。
页面间的通信
//manifest.json文件
{
"name": "Hello,World!",
"manifest_version": 2,
"version": "1.0",
"description": "demo-hello,world",
"icons": { "128": "icon.jpg" },
"browser_action": {
"default_title": "hello,world",
"default_icon": "icon.jpg",
"default_popup" :"popup.html"
}
}
<!-- popup.html -->
<h1>Hello,World!</h1>
实例二
{
"name": "Back2Top",
"manifest_version": 2,
"version": "1.0",
"description": "Back2Top",
"icons": { "128": "icon.jpg" },
"content_scripts": [{
"matches": ["http://open.chrome.360.cn/*"],
"js": ["js/cs.js"]
}],
"page_action":{
"default_icon":"top.png",
"default_title":"back2top",
"default_popup":"popup.html"
},
"background": {
"scripts": ["js/bg.js"]
},
"permissions":[
"tabs"
]
}
var img = document.createElement("img");
img.id = "gotop";
img.src = "http://img-chilezhang.qiniudn.com/top.png";
img.setAttribute("style","position: fixed;bottom: 113px;z-index: 99;right: 50px;cursor:pointer;opacity: 0.5;");
img.onclick = function (){
go = function() {
var height = document.documentElement.scrollTop || document.body.scrollTop;
var speed = -50 - height / 10;
window.scrollBy(0, speed);
if(height == 0) clearInterval(scrolldelay);
}
scrolldelay = setInterval(go, 10);
}
img.onmouseover = function() {
this.style.opacity = 1;
}
img.onmouseout = function() {
this.style.opacity = 0.5;
}
document.body.appendChild(img); chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if(tab.url.indexOf('open.chrome.360.cn') > 0) {
chrome.pageAction.show(tabId);
}
});
<html>
<head>
<title></title>
</head>
<body>
<h1>Back2Top</h1>
</body>
</html>分享
Clover for Windows Explorer

谢谢!
by
zhili.zhang