Article
Article copied to clipboard
写东西并不是件容易的事
# 一起来做Chrome/Firefox/Edge Extension《使用eval类方法》  因为FireFox已经使用了Chrome相同的Extension内核,所以为Chrome制作的Extension可以几乎无缝的发布到FireFox里。但Firefox对代码的要求比Chrome要高,比如今天的主角eval类方法就不允许在Extension里使用,Chrome是可以使用的。本文就是介绍一下相关的内容以及如何去支持。 ## eval类方法 简单说明一下,`eval`类方法,除了`eval`还有`new Function`,这两个方法要在Extension里使用,需要在`manifest.json`里开启`安全策略`,如: ```json "content_security_policy": "'unsafe-eval'", ``` 不然就会报错: ```javascript Uncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed...
# 一起来做Chrome/Firefox Extension《一些问题》 | 更新时间 | 说明 | | --------- | ---------------------------------- | | 2019.4.16 | 增加:关于chrome.tabs.getCurrent() | ### 目录 1. Unchecked runtime.lastError: The message port closed before a response...
# 一起来做Chrome Extension《页面右键菜单》 *** ![][1] ## 本文主要内容 - contextMenus的设置 - 打开权限 - 创建菜单 - 点击菜单 - background script向content script发送消息 ## 预览 ![WechatIMG2.png][2] ## 1. contextMenus的设置 ### 1.1 打开权限 contextMenus同其它功能一样,都需要在permissions里指定开启,所以非常简单,在项目的manifest.json文件的permissions中加上contextMenus ```json...
# 一起来做chrome Extension《本地存储localStorage》 chrome中的本地存储其实也是用的HTML5中localStorage,唯一区别是chrome扩展有自己的localStorage,它属于这个扩展,而不属于一个域名。得用这一点可以很好的处理扩展自己的一些数据,而不受访问网站和域名的影响。 ## localStorage基础 localStorage是HTML5特性,所以有些浏览器不一定支持,不过我们这里讲的是chrome扩展,所以完全不用担心这个问题。如果想在WEB页面上使用,那就要检查一下是不是支持它 可以这样的检测: ``` if(window.localStorage){ console.log('支持'); }else{ console.log('不支持'); } ``` localStorage和memcache一样,是key/value的存储类型,所以,除非你只存字符串,不然就得以json的形式来存储。之后解析成数组,就可以很好的使用里面的值。 增删改查: ``` // 存储/修改 localStorage.name = 'only'; localStorage['name'] = 'only'; // 删除 localStorage['name'] =...
# 一起来做chrome Extension《AJAX请求》 chrome在一次更新之后,出于安全考虑,完全的禁止了content_script从https向http发起ajax请求,即使正常情况下也会在console里给出提示。这对于WEB来讲是好事,但对于扩展来讲就是坏事。平时可以很容易的请求数据,现在就没那么容易了。好在chrome还提供了background_script,利用content_script和background_script之前的通信来实现ajax的请求,就跳过了chrome的这一限制。 ## content_script 从名字里就知道,content_script是植入型的,它会被植入到符合匹配的网站页面上。在页面加载完成后执行。content_script最有用的地方是操作网站页面上的DOM。一切平时做前端的一些操作它都可以做,像什么添加、修改、删除DOM,获取DOM值,监听事件等等,都可以很容易的做到。所以,如果想获取人家的登录帐户和密码,就是件非常容易的事,只需要添加content_script,监听帐户和密码的文本框,获得值后将数据发送到自己的服务器就可以了。因此,特别说明,别乱装扩展,特别是不从官方扩展库里下载的扩展。 使用content_script 要使用content_script,需要在manifest.json中配置,如下: ```json { "manifest_version": 2, "name": "My Extension", "description": "Extension description", "version": "1.0", "content_scripts": { "js": [ "content.js" ] } } ```...