标题:开发Firefox插件遇到的恼火问题
只看楼主
hzzasdf
Rank: 2
等 级:论坛游民
威 望:1
帖 子:10
专家分:70
注 册:2017-2-9
 问题点数:0 回复次数:0 
开发Firefox插件遇到的恼火问题
以前没接触过这一块,最近突发奇想,想做个Firefox插件,功能主要是解析网页代码,找出书页链接,然后自动生成批量链接,下载整本书。结果非常郁闷,不吐不快,故注册了账号来发贴。如果有高人有好的解决办法,不胜感激。
Firefox插件开发,以前叫做addon开发,使用Firefox自己的一套类库,好像功能挺强大,但是看了下入门教程,好像过于复杂,我不想做什么界面,所以不需要xul。更重要的是,Firefox官网上声明,准备放弃addon,转为web extension。我想,学习将要过时的技术没意思吧,于是看web extension。
完整的参考书一下子找不到,只好看网上的教程,结果都不太理想,照着做了,运行正常,但稍微改一下就出错,而且没有出错信息,无声无息,反正要么插件加载不起来,要么运行后没反应。而且网上的教程都过于简单,稍微复杂一点的情况就要自己动脑筋了。结果问题不断,取不到网页元素,点按钮无反应,等等。
后来发现还是官网上的api参考手册最有用,除了函数声明外,最有用的是文字说明。一直折腾到凌晨3点,在经历了无数次失败后,总算理解了background script和content script的作用,顺利地用程序自动下载了10页,好像即将大功告成。
但是很快发现一些问题无法解决。一是无法设置网页的保存路径。查了很多资料,发现原来的addon方式是可以修改浏览器的设置的,但web extension,官网的参考手册明确说不支持修改浏览器设置,把这条路直接阻断了。好吧,也认了,最多下载前手工设置一下,虽然不方便,但似乎还可以忍受。
但又发现一个严重的问题。下载时,遇到同名文件,api只提供了两种方式,要么自动改名,要么直接覆盖,竟然没有“跳过”这个选项!本来,api还提供第3种方式,就是跳出对话框提示用户,这样还有手工跳过的机会,但api的说明里明确说Firefox不支持这种方式!很多ftp软件在遇到同名文件时都有“跳过”这个选项,不知道web extension的设计/开发者怎么想的!
而且,发现用web extension几乎无法检查文件是否已存在。web extension里对本地文件的操作几乎不支持。downloads对象里可以根据文件名搜索已下载的文件,但文件名必须带完整绝对路径,这本来也有道理,问题是download方法里,只能指定相对路径,而web extension api又不提供获取浏览器缺省下载路径的手段。stackoverflow上有人问过这个问题,回答是明确的No,除非用很肮脏,效率又低的变通手段。这样,下载时只能用相对路径,下载后查询只能用绝对路径,所以无法检查文件是否已下载完成,除非是通过id来查询,但这样只能在同一个session里实现,也就是说,今天我用程序下载了一个文件,明天我重起程序,就无法用id来查这个文件是否已下载,将id保存在local store里(因为无法写本地文件)不知道行不行,但即使行,local store也不适合这样用。最后想出的变通方法是让用户输入路径,但感觉也很麻烦,很不好用。
这样,逐渐发现web extension真的很垃圾。功能太少,和addon无法相比,无法操作本地文件,无法编辑浏览器设置。。。。。。在网上粗粗看了一下,功能强大好用的插件几乎都是用addon做的。这web extension要推广,凭现在可怜的那点功能,我看是搞不好的。
另外,web extension里什么都用异步。尼玛,用同步会死人啊。我就不在乎所谓的“阻塞”,等就等,又不是等一万年!什么都用异步,给编程增加了多少麻烦!那么喜欢异步,也提供同样功能的同步方式api,有那么难吗?
最后决定还是用selenium web driver作为辅助,提供web extension难以做到的那些功能,只把实际的下载交给web extension实现(因为不能直接下载,有些cookie,session什么的获取比较麻烦)。对了,Firefox还有个臭名昭著的插件必须有官方签名的要求,只能安装Nightly或者43以下版本,才能运行自制的插件。
搞了这么一回,对Firefox的印象更加差了。
最后,如果有哪位高手,能够解决检查文件是否存在这个问题,就送上20分。不过,这个帖子主要是吐槽。实在是太郁闷,不吐不快。
补充:
这几天又折腾了一下,最后恼火地发现,Nightly只能调试未签名的web extension,却不能正式安装。只有旧的基于xul的addon可以安装。这下决定彻底放弃web extension!


[此贴子已经被作者于2017-2-14 04:43编辑过]

搜索更多相关主题的帖子: 开发 做什么 突发奇想 Firefox 不胜感激 
2017-02-09 03:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-474084-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013633 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved