论坛首页 Web前端技术论坛

Maxthon插件开发

浏览 2550 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-01-11  
前言
我曾在这篇博文(http://www.iteye.com/topic/1117020)中说过要分享一下浏览器插件开发的。今天,趁现在有点时间,写一下吧,呵呵。

介绍
这个介绍不是介绍浏览器市场分布,也不是介绍浏览器插件辉煌,而是说明一下浏览器插件的开发前的准备。
首先,这里为什么只说Maxthon插件开发呢?因为我当时就是用Maxthon写的插件。答案是不是出奇的简单?
其次,插件的开发其实原理上都是差不多的,学会一个可以举一反三很快就会掌握很多浏览器插件的开发。毕竟插件开发也不是什么难事,就是HTML和JS的有机组合!
好了,话不多说,进入开发……
开发
哦,对了,在此之前有三点要跟大家说明一下:
1、目前只有Maxthon2.x才支持插件模式(不好意思,说一下,Maxthon3.x也可以支持插件开发了,参考:http://bbs.maxthon.cn/viewthread.php?tid=610087);
2、Maxthon插件开发也是有官方文档的,但其维护却很……烂!烂到无以复加!烂到你以为那不是官方文档!好吧,它的地址是:http://bbs.maxthon.cn/viewthread.php?tid=23564
大家同时也可以参考一下这个文档:http://hi.baidu.com/xkplt/blog/item/4cf206f7f7cb5f2a730eec17.html
3、最好的学习方式是下载一个人家比较好的插件下来,看源码时再看文档,这样学习效率事半功倍哦。插件下载地址:http://addons.maxthon.cn/
最近铁道部售票网站买票难已经被大家说得不能再说了~作为程序员,我当时就想到两个方法来实现自动购票:可以写一个类似的网络爬虫的程序来实现自动票请求;也可以写浏览器插件来实现该过程(个人觉得浏览器插件实现起来应该会更简单、优雅一些)!我本人因为离家近,不需要买票,所以没有动力去及时实现,结果网上这两种方式都有了!
好了,废话又讲了一堆,我们开始开发插件吧:
配置开发
首先,既然是插件,就必须有遵循的加载标志,Maxthon中就是一个plugin.ini文件。所以,我先建立一个文件夹(名称最好就是插件名称),在文件夹里面建立一个plugin.ini文件,里面的内容大致如下:
[General]
Name=工作小助手
Author=hellohank
Version=1.0
ModuleType=SCRIPT
FileName=saveCustomer.htm
Comments=帮助我家老婆工作的一些小工具\n
Type=M2Plugin_BUTTON
HotIcon=icon.ico
Icon=icon.ico

[MyIE2Buttons] 
Count=1
Name1=保存客户信息
FileName1=saveCustomer.htm

Count=2
Name1=完善客户信息
FileName1=perfectCustomer.htm

从上面的配置来看,我们定义了插件的显示名称、插件类型(这里是SCRIPT类型)、启动文件、插件图标等,最后,我们这里还建立了两个按钮,分别做两件不同的事!
那接下来让我们看一下htm文件中的内容做了什么事(注意这是SCRIPT类型的插件,所以它的htm文件中最好不要有html标签):
<script language="javascript">
//加载jquery
var jqueryJs=document.createElement('script');
jqueryJs.src='file:///'+(external.m2_plugin_folder(%max_security_id,PlugName))+'jquery142.js';
document.body.insertAdjacentElement('afterBegin',jqueryJs);
//
//
saveCustomer();

function saveCustomer() {
	readFiles();
}

function readFiles() {
	try {
		var fso = new ActiveXObject("Scripting.FileSystemObject")
	} catch (e) {
		alert("您的浏览器安全级别太高,无法保存,请调整您的安全级别到低"+e);
		return;
	}
	var ts, s;
	var ForReading = 1;
	// 定义数组
	var clientsDate = new Array();
	// 读取文件的内容。
	ts = fso.OpenTextFile("d:\\test.txt", ForReading, true);
	while (!ts.AtEndOfStream) {
		s = ts.ReadLine();
		clientsDate.push(s);
	}
	ts.Close();
	// 迭代弹出读取文件的数据
	for ( var i = 0; i < clientsDate.length; i++) {
		alert(clientsDate[1]);
	}
}
</script>

注意一下上面的代码,你会发现,它和我们平时写的HTML一模一样!因为它其实就是HTML开发方式!还有,你也可以看到我在这里引用了jquery!这一点还是很重要的,因为我们很多时候是需要借助第三方的js或什么的来简洁地处理自己的事情!
打包安装
当所有的文件都写完了,就可以打包并安装调试了!
呃……好吧,我们先来说说调试吧:其实Maxthon没有调试功能(至少我开发时还没有)!但我们也可以试用啊~
找到你的Maxthon安装路径,在里面有一个Plugin文件夹,将你建的插件文件夹直接复制到该文件夹下,然后重启Maxthon即可(刷新一下页面也行,但有时候会出现加载不完全的现象,所以还是建议重启),然后你就会在相应的地方看到你的插件了,然后你就可以调用它了!
当你调试完之后,想分享给别人使用,该怎么办呢?有两个办法:
1、将你建的那个插件文件夹直接发给人家,让人家放在那个目录下即可!如果你遇到对电脑什么都不懂的小白的话(一般来说女生居多)……你要解释半天该怎么放了~
2、将这个插件文件夹打包成插件发给对方,让对方直接把插件拖到Maxthon上就可以直接安装!
打包为插件的步骤为:
a)、将插件文件夹压缩为zip文件;
b)、将该zip文件的后缀更改为.m2p即可;这个m2p文件就是插件文件,可以直接拖到浏览器上安装!
经验积累
  • 如果可以,建议大家尽量不要用maxthon2.x,因为它会无故缓存js,让你以为自己的js写得有问题!而且有时候,你的js写得就是对的,结果它还是认为有错误!这让我受尽了苦头!
  • 其它浏览器的插件开发也大抵相似(前提是这个浏览器支持插件方式),对于FireFox来说,如果你自己只是实现一些基本的功能,FireFox有一个很强大的插件(),它允许用户自定义js,然后执行!
  • 要用zip方式打包之后,再将后缀改为m2p才能正常安装;
  • plugin.ini中可以写中文;
  • Script类型的插件是在当前Tab页面起作用,HTML类型的是全局起作用。
  • 任何文件里面不能有乱码!所以一定要注意文件编码问题!
  • 论是SCRIPT类型,还是HTML类型,里面的代码操作与普通的开发一样(当成当前正在写的一个HTML文件)。需要注意的是:HTML页面中的内容将会在插件图标所在的位置显示。如在状态栏时,会在状态栏显示body中的内容
  • HTML类型的插件是没有图标的!
  • 注意文件编码格式!尽量使用Nodepad文本编辑,因为它可以随时指定文本编码。
  • SCRIPT类型插件件只有在打开页面,且页面加载完之后会会运行!
  • 如果想消除页面alert弹出框,可以用ifame嵌嵌套重写window.alert来消除js的alert跳出!
   发表时间:2012-01-11  
Maxthon已无前途
0 请登录后投票
   发表时间:2012-01-11  
anubiskong 写道
Maxthon已无前途

顶楼上~~我已经开始慢慢边缘化Maxthon了~~嘿嘿~
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics