1、不允许执行任何inline javascript代码(就是说在html内的任何JS代码都是非法的)
解决方案 : 将html内的JS代码移除,放入单独JS文件内,将此文件添加到"background"内(下面实例将会说到)
2、扩展程序包的资源默认情况下不再可用于外部网站(作为图片的src属性或者script标签)
解决方案:可在mainfest.json文件中设置"web_accessible_resources"属性将可用于外部网站的资源加入白名单
3、"background_page"属性需要更改为"background"属性
4、Browser action一些改进:
1)browser_actions及chrome.browserActions API需要用browser_action、chrome.browserAction API替代
2)browser_actions中的icons属性需要用default_icon属性或chrome.browserAction.setIcon替代
3)browser_action中的name属性需要用default_title属性或chrome.browserAction.setTitle替代
4)browser_action的popup属性需要用default_popup属性或 chrome.browserAction.setPopup替代
5)browser_action的default_popup属性不能再指定为对象,而必须为“字符串”
5、Page action一些更改:
1)page_actions及 chrome.pageActions API需要用page_action、chrome.pageAction替代
2)page_action中的icons属性需要用default_icon属性或 chrome.pageAction.setIcon替代
3)page_action 中的 name 属性需要用 default_title 属性或 chrome.pageAction.setTitle替代
4)page_action 中的 popup 属性需要用 default_popup 属性或 chrome.pageAction.setPopup替代
5)page_action 中的 default_popup 属性不能再指定为对象,而必须为“字符串”
6)chrome.self API需要用 chrome.extension替代
6、chrome.extension.getTabContentses与 chrome.extension.getExtensionTabs需要用chrome.extension.getViews({ “type”: “tab” })替代
7、Port.tab 需要用Port.sender替代
原文可参考:https://developer.chrome.com/extensions/manifestVersion.html
每个应用(扩展)都应该包含下面的文件:
{ "name": "Keep Active in url", "version": "0.2", "manifest_version": 2, "description": "Automatically keep a loginned user's status active in url.", "icons": { "48": "icon_48.png", "128": "icon_128.png" }, "background": { "scripts": ["background.js"] }, //区别版本1,这里需要把JS代码放入background.js文件中 "page_action": { "default_title": "start", "default_icon": "icon_19.png" },//只在匹配页面的URL框中显示插件图标 "permissions": [ "tabs" ], "content_scripts": [ { "matches": ["http://XXXXXX/"],//自己需要的URL "js": ["visit.js"] } ]}
chrome.extension.sendRequest({},function(response) {});
此代码在获得匹配URL后,它的作用是向扩展程序管理者发送一个请求消息。这个消息将被background.html捕。
var winid = 0;var tabid = 0;chrome.extension.onRequest.addListener( function(request,sender,sendResponse){ chrome.pageAction.show(sender.tab.id); chrome.windows.getCurrent(function(Win){ winid = Win.id }); circle(); });function circle(){ radomURL = "http://XXXXX/XXXXX?t=" + Math.floor(100000 + Math.random()*6000); //随机生成论坛网页代码,需要根据自己实际情况修改 chrome.tabs.create({windowId:winid,url: radomURL,selected:false},function(tab){tabid = tab.id}); chrome.tabs.remove(tabid); setTimeout(circle,60000); }其中,chrome.extension.onRequest.addListener捕获前面visit.js传来的请求消息后执行。chrome.pageAction.show(sender.tab.id)在发送消息的tab上显示扩展程序图标。chrome.windows.getCurrent定位到当前的Chrome窗口,通过winid = Win.id获取当前窗口ID。接下来是一个函数circle(),它在要结束的时候延迟60秒调用自身,因而构成死循环。这个函数先生成一个指向论坛的随机的URL,然后在前面的这个窗口里创建一个新的标签chrome.tabs.create,并在里面打开这个随机URL,selected:false表明不选定这个标签,因而做到不影响用户的正常使用,同时用tabid = Tab.id获取创建的这个标签的ID,最后关闭这个标签。
代码中的三个图标,尺寸分别为:19*19、48*48、128*128,这都是开发文档中要求的固定大小。本代码选用图标如下:
首先需要把我们编写好的manifest.json 、visit.js、 background.js、icon_19.png、icon_48.png、icon_128.png六个文件放入一个文件夹内。之后选择Chrome浏览器中扩展程序里的开发者模式,点击“加载正在开发的扩展程序”选中你的文件夹(本文我设定文件夹名称为Chrome Keep Active)将程序加载,如下图:
之后,点击加载上的Chrome插件的“检查试图”就能打开Chrome调速器啦,如下图。
在调速器下我们可以设置断点调试我们开发的插件,进而修改代码错误。
般来说,有如下两种发布方式:
chrome.exe --pack-extension="C:\Chrome Keep Active"
执行完之后,就在Chrome Keep Active文件夹同级目录下生成Chrome Keep Active.crx和私钥文件Chrome Keep Active.pem,私钥文件用于升级软件时使用。
重新发布时使用的命令行是:
chrome.exe --pack-extension="C:\Chrome Keep Active" --pack-extension-key=“C:\Chrome Keep Active.pem”生成的crx文件就用于发布,而私钥文件则自己保留。
在https://chrome.google.com/extensions/developer/dashboard发布完成的扩展程序。上传时是传的扩展程序目录所有文件打包成的一个.zip文件(注意不是.crx)。上传中,不需要用到pem文件。
联系客服