想实现一款插件,对接腾讯图床。
Tencent COS
想实现一款插件,对接腾讯图床。
遇到的问题:如果把网页上的图片直接传到图床中,这里给出思路,通过图片 url 将图片 变为 base64 的格式,然后将 base64 各式变为 blob 格式。(为啥不直接把图片变为 blob ?,因为我只是个业余javascript选手)
然后在上传图片的过程中,指定 ContentType 为图片类型(官方文档没有这个属性呀。没有?他们忘写了。)
下面是些插件遇到的问题(没错,我还是个业余的chrome-extension选手)
关于popup
Question 1
如何让 popup.html 以弹出的方式进行工作?
上面的问题分为2种情况
第一种是 background.js 监听 browserAction 的情况下,只要 browserAction 被点击了,就将 popup 以弹出的方式工作。
第二种是 browserAction 已默认的方式使用,而达到某个出发条件后,将 popup 以弹出的方式工作。
情况二
情况二的问题更少些,放在前面。
1 | //在某个事件被触发时 |
情况一
情况一以经表明,要监听 browserAction 。如果要通过这种情况,可以在 background.js 中注册监听函数。
1 | // background.js |
注意,这种情况下,存在一个问题,如果要通过监听的方式打开 popup.html 那么在 manifest.json 中不能注册 "default_popup": "popup.html"
这条信息,否则监听无效。
坑
下面说一下,在做这2个东西时候遇到的坑。
如上面代码所示,在chrome.windows.create
中,明明有指定type
的类型为 popup*,但是如果通过下面的代码获取 *popup 是无法获取到的。但是下面的代码可以获取 "default_popup": "popup.html"
情况下的 popup页面。
1 | var views = chrome.extension.getViews({type:'popup'}); |
但通过测试发现,要用下面的方式。
1 | var views = chrome.extension.getViews({type:'tab'}); |
也就是说,创建出的页面仍然是 tab
的类型。