返回信息流因为自己对这方面的内容知之甚少,所以想跟大家讨论一下。
之前开了一个有关HTML5的楼,没想到会有那么多的朋友回复参与讨论,受宠若惊。才发现入学多年来从来没有利用好论坛这个身边最大的资源,还好现在还来得及。
对于浏览器插件,我主要有以下几个问题:
1)浏览器插件有哪些种类?
2)插件的实现原理是什么?在Windows环境下是否类似于动态链接库一类的程序?
3)浏览器统一封装插件功能,对外提供API,这样的架构是否靠谱?
由于自己所知有限,有些问题描述的不太专业,还请各位批评指正。
这是一条镜像帖。来源:北邮人论坛 / www-technology / #13717同步于 2011/6/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
开个楼与大家讨论浏览器插件
fk187andhk
2011/6/6镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
浏览器插件和别的程序的插件没有本质的区别吧。只是提供一个操纵网页的接口而已。
程序的插件,只要能动态装载就可以吧,至于如何动态装载,跟语言、实现有关。比如c/c++可以dll/so动态加载;java用jar,c#用dll,python可以直接加载其他.py……
当然也不必要求插件和主程序是一种语言。比如c程序里嵌入一个lua解释器,java程序里嵌入一个javascript解释器……然后装载脚本就像读文本文件一样。
甚至也不要求在同一个进程里。
================================
考虑以前这个帖子: http://bb6.byr.cn/article/SoftDesign/37341
还有以下这些脑残文:
http://cloverprince.iteye.com/blog/481307
http://cloverprince.iteye.com/blog/481309
http://cloverprince.iteye.com/blog/481312
http://cloverprince.iteye.com/blog/481574
http://cloverprince.iteye.com/blog/481755
http://cloverprince.iteye.com/blog/481776
================================
做过firefox扩展(extension)。一个扩展用
* 一些xul描述界面
* 一些javascript脚本程序描述行为
* 一些css, 图片什么的
* 当然还有一些元数据,像插件名称什么的……
一个扩展就是这些文件打一个包(其实就是zip文件)
其实firefox本身也是用xul+js写的。所以整个浏览器就像是被解释执行一样。所以也不是用dll这样的本地代码程序扩展的。
至于如何装载……xul是xml文件,可以直接读取然后解析;js是文本格式,浏览器里内置一个js解释器解释就可以了。
比如这个:
<overlay id="sample"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<statusbar id="status-bar">
<statusbarpanel id="my-panel" label="Hello, World" />
</statusbar>
</overlay>
这是一个在状态栏上添加一个“hello world”的代码。firefox装载它(就是解析这个xml)以后,按xml的意思,在状态栏上添加一个栏目就可以了。
关注一下。
顺便问这样一个问题:跨不同浏览器的插件,比较好的实践是什么样子的?
【 在 wks (cloverprince) 的大作中提到: 】
: 浏览器插件和别的程序的插件没有本质的区别吧。只是提供一个操纵网页的接口而已。
: 程序的插件,只要能动态装载就可以吧,至于如何动态装载,跟语言、实现有关。比如c/c++可以dll/so动态加载;java用jar,c#用dll,python可以直接加载其他.py……
: 当然也不必要求插件和主程序是一种语言。比如c程序里嵌入一个lua解释器,java程序里嵌入一个javascript解释器……然后装载脚本就像读文本文件一样。
: ...................
这……
除了让不同的浏览器满足同一个标准(比如统一用firefox扩展的接口),没别的好办法吧。
【 在 BookMoth 的大作中提到: 】
: 关注一下。
: 顺便问这样一个问题:跨不同浏览器的插件,比较好的实践是什么样子的?
: 【 在 wks (cloverprince) 的大作中提到: 】
: ...................
【 在 wks 的大作中提到: 】
: 浏览器插件和别的程序的插件没有本质的区别吧。只是提供一个操纵网页的接口而已。
: 程序的插件,只要能动态装载就可以吧,至于如何动态装载,跟语言、实现有关。比如c/c++可以dll/so动态加载;java用jar,c#用dll,python可以直接加载其他.py……
: 当然也不必要求插件和主程序是一种语言。比如c程序里嵌入一个lua解释器,java程序里嵌入一个javascript解释器……然后装载脚本就像读文本文件一样。
: ...................
谢谢大牛了,能不能指导一下,有没有哪些比较经典的这方面的书籍?
【 在 BookMoth 的大作中提到: 】
: 关注一下。
: 顺便问这样一个问题:跨不同浏览器的插件,比较好的实践是什么样子的?
: 【 在 wks (cloverprince) 的大作中提到: 】
: ...................
不同浏览器之间的插件,是不是用Java的那个比较好?
跨浏览器?油猴就好了
关键是接口,不过大多都是js,似乎封装一层也不是不行。
什么?你说IE?IE可以吃掉吗?
【 在 BookMoth 的大作中提到: 】
: 关注一下。
: 顺便问这样一个问题:跨不同浏览器的插件,比较好的实践是什么样子的?
: 【 在 wks (cloverprince) 的大作中提到: 】
: ...................
请教一下,lz说的“浏览器插件”的定义是什么呢?是不是我理解错了?
或者举几个例子,什么样的东西是浏览器插件?
【 在 fk187andhk 的大作中提到: 】
: : 关注一下。
: : 顺便问这样一个问题:跨不同浏览器的插件,比较好的实践是什么样子的?
: : 【 在 wks (cloverprince) 的大作中提到: 】
: ...................
【 在 wks 的大作中提到: 】
: 请教一下,lz说的“浏览器插件”的定义是什么呢?是不是我理解错了?
: 或者举几个例子,什么样的东西是浏览器插件?
: 【 在 fk187andhk 的大作中提到: 】
: ...................
怎么说呢,我意思的浏览器插件就类似于Flash插件这类的扩展浏览器功能的应用程序
比如我们看优酷等视频网站都必须有Flash插件