更多相关内容...>>傲游浏览器插件制作教程
傲游浏览器插件制作教程
Maxthon 插件类型
AxUXcf http://blog.numino.net/
Maxthon 的插件类型由 ModuleType (Script,HTML,COM 及 EXE) 及 Type (Button,SideBar,Toolbar,及 Other) 2 个方面同时定义:
5uTzfY http://blog.numino.net/
Button SideBar Toolbar Other
cuA62w http://blog.numino.net/
Script 支持 支持
z9tnIj http://blog.numino.net/
HTML 支持
uDU95B http://blog.numino.net/
EXE 支持
1333gd http://blog.numino.net/
COM 支持 支持 支持 支持
wHVPR5 http://blog.numino.net/
ModuleType - Script,HTML,COM 及 EXE
K14b9P http://blog.numino.net/
Script - 可以是按钮类型,在点击按钮时执行脚本。脚本可以采用 IE 支持的脚本语言编写,比如 javascript 及 vbscript。此外 Maxthon 2.0 提供额外的 mscript 脚本执行方式,可以实现更强大插件功能。Script 插件亦可以是侧边栏类型,在侧边栏显示插件指定的 HTML 档案。HTML 档案可以采用 IE 支持的 HTML 语言格式编写。
gCNs40 http://blog.numino.net/
HTML - 是 Maxthon 2.0 新添加的插件类型,和 Script 侧边栏插件性质相同,主要分别是 Script 侧边栏插件在侧边栏显示,而 HTML 插件则以按钮型式在工具栏显示。
vQgJd6 http://blog.numino.net/
COM - 可以采用任何 MSCOM 支持的语言编写,比如 C++,C#,Visual Basic,Delphi 等。Maxthon 默认支持按钮类型,工具栏类型及侧边栏类型 COM 插件。另外,COM 插件亦可以自行添加拟采用的插件显现方式,比如菜单或弹出窗口。
BjEeg8 http://blog.numino.net/
EXE - 可以是任何可执行档案,以工具栏按钮形式在 Maxthon 显现。Maxthon 可以在执行 EXE 插件是提供参数,比如页面地址及 Maxthon 窗口的句柄等
nZGT5H http://blog.numino.net/
Type - Button,SideBar,Toolbar,Other
Mfn966 http://blog.numino.net/
Button - 插件会在插件栏添加一个按钮,点击按钮时会执行指定由脚本 (Script 插件),程序 (EXE 插件),DLL (COM 类型插件),指定的操作。Script 及 EXE类型按钮插件可以选择性在插件按钮添加下拉菜单。
quYsiD http://blog.numino.net/
SideBar - 插件会在侧边栏添加一个按钮,及在主菜 > 查看 > 侧边栏添加一个命令,在执行时会打开侧边栏及显示插件指定的 HTML 页面。
HNVTYL http://blog.numino.net/
Toolbar - 插件会添加一个工具栏,新添加的工具栏可以在主菜 > 查看 > 工具栏选择是否显示。
wsArLS http://blog.numino.net/
Other - 插件没有固定显示接口,插件可以因应需要自行改变接口,比如改变菜单,添加按钮
e250jq http://blog.numino.net/
制作 Maxthon 插件
874z7h http://blog.numino.net/
Maxthon 插件的主要元件 Maxthon 插件一般具备以下档案:
0L0yQ6 http://blog.numino.net/
INI 档案 – plugin.ini 必须,定义插件的各个属性
h0FeC8 http://blog.numino.net/
HTML/DLL/EXE 档案 – 必须,指定插件需要执行的操作,或需要显示的内容
tDSJi3 http://blog.numino.net/
图标档案 – 按钮图标 (*.ICO),适用于按钮类型及侧边栏类型插件,COM 或 EXE 插件可以用 DLL 或 EXE 内含图标
l41MQG http://blog.numino.net/
Config.html – 选择性,应用于 Script 及 HTML 类型插件的设置窗口
YyoIqo http://blog.numino.net/
plugin.ini 档案
vt787D http://blog.numino.net/
每个 Maxthon 插件必须具备一个 plugin.ini 档案,定义插件的各项属性。
1NV8gi http://blog.numino.net/
[General] 必须,定义插件的主要属性
K3mOVa http://blog.numino.net/
Name= 插件名称
zo2nbE http://blog.numino.net/
Author= 作者名字
o6YK6i http://blog.numino.net/
Version= 版本号
Udn7JL http://blog.numino.net/
ModuleType= 可以是 Script,HTML,COM 或 EXE
rYA29q http://blog.numino.net/
FileName= 可以是 HTML 档案 (Script 及 HTML 插件),DLL 档案 (COM 插件),或 EXE 档案 (EXE 插件)
zgJNjn http://blog.numino.net/
Comments= 在插件选项或按钮的工具提示所显示的描述
RFZ1PL http://blog.numino.net/
Type= 可以是 M2Plugin_BUTTON,M2Plugin_SIDEBAR,M2Plugin_Toolbar 或 M2Plugin_Other
j52Htg http://blog.numino.net/
IdealSize= 指定插件在接口显示的大小,比如 “120 20”(阔度 高度,适用于 HTML 插件)
e06Es7 http://blog.numino.net/
IdealSizeVertical= 选摘性,指定当工具栏在垂直放置的插件接口显示的大小,比如 “120 20”(阔度 高度,适用于 HTML 插件)
2D68C2 http://blog.numino.net/
Icon= 在按钮或侧边栏插件显示的图标 (适用于按钮及侧边栏插件)
48j6C7 http://blog.numino.net/
HotIcon= 当鼠标移到插件按钮上时显示的图标 (适用于按钮插件)
1Lri1W http://blog.numino.net/
CLSID= COM 插件的 CLSID (适用于 COM 插件)
GC3EOT http://blog.numino.net/
StartAfterPageDone= 0 或 1,选摘性,设置 script 按钮插件是否自动执行
EGgWef http://blog.numino.net/
DefaultLocation= 按钮插件的默认显示位置,可以是 None (在插件栏,但不显示),MenuBar (菜单栏),ToolBar (标准工具栏),或 StatusBar (状态栏)。如果不设置则在插件栏显示。
twVGEt http://blog.numino.net/
StartAfterPageDoneUrl= 设置 script 按钮插件自动执行的地址,使用通配符格式,可以用 "|" 分隔多个网站,比如 *maxthon.com*|forum.maxthon.cn*。不设置的话在所有地址自动执行,等同设置为 *
9snq1n http://blog.numino.net/
StartAfterPageDoneUrlExclude= 设置 script 按钮插件不自动执行的地址,使用 startAfterPageDoneUrl 相同格式,比如 forum.maxthon.cn/index.php?|*.maxthon.cn/index.php?showtopic*
5VLH4M http://blog.numino.net/
[MyIE2Buttons] 选摘性,定义按钮类型插件的下拉菜单,适用于 Script 及 EXE 类型插件
6QnkNd http://blog.numino.net/
Count= 插件下拉菜单项目的数量
qBhchm http://blog.numino.net/
Name1= 第一个下拉菜单项目的名称,如此类推
Qf89mS http://blog.numino.net/
FileName1= 提供第一个下拉菜单项目应执行的代码的档案,如此类推
bFn2VU http://blog.numino.net/
安装 Maxthon 插件
4nyG8X http://blog.numino.net/
Maxthon 插件是安装在 Maxthon 目录内的 Plugin 目录。每个插件在 Plugin 目录内均有独立的目录,目录内包含 plugin.ini 及其他插件档案或子目录。
uj6XNz http://blog.numino.net/
制作好的插件可以把插件的目录连同内里的 plugin.ini 及所有其他档案及子目录打包成 ZIP 档案(*.zip) 发布
frlf94 http://blog.numino.net/
Maxthon 2.0 插件
zEmTzh http://blog.numino.net/
Maxthon 2.0 支持专用的 M2P 插件安装包格式 (把*.zip 更名为 *.m2p 即可),用户只要双击 M2P 档案或把M2P 档案拖放到 Maxthon 2.0 窗口插件便会自动安装
VjpF6U http://blog.numino.net/
Maxthon 1.X 插件
ad31JR http://blog.numino.net/
在 Maxthon 1.X 安装插件需按照以下步骤:
Q9oJdG http://blog.numino.net/
1. 关闭 Maxthon 浏览器。
9qAIwN http://blog.numino.net/
2. 把 ZIP 档案解压到 Maxthon 目录内的 Plugin 目录。完成後插件的 plugin.ini 档案应在类似如下位置:C:\Program Files\Maxthon\Plugin\新插件\plugin.ini
Ah39eG http://blog.numino.net/
3. 打开 Maxthon 浏览器,插件安装窗口会出现
u443pZ http://blog.numino.net/
4. 确认安装新插件
jWwP7k http://blog.numino.net/
Maxthon 脚本插件指令
TlZWac http://blog.numino.net/
Maxthon 提供多种插件指令供脚本插件调用,以加强脚本插件的功能。这些插件指令可以透过 window.external 执行。部份插件指令需要提供 Security ID 参数方能执行,而Security ID则由 Maxthon 提供给脚本插件。
AqRL5S http://blog.numino.net/
如何取得 Security ID
sFvELX http://blog.numino.net/
1. 按钮插件可以在脚本中直接使用 %max_security_id 作为 Security ID
b5miQJ http://blog.numino.net/
2. 侧边栏及 HTML 插件需要载入由 Maxthon 自动产生的脚本 max.src,之後便能使用 max_security_id 作为 Security ID。
DKvdOn http://blog.numino.net/
<script src=max.src></script>
MQ493v http://blog.numino.net/
Maxthon 插件指令
7i90Tf http://blog.numino.net/
除特别注明外,以下插件指令同时适用于 Maxthon 2.0 及 Maxthon 1.X。
A71G15 http://blog.numino.net/
1. max_version - 传回 Maxthon 版本号
5J1547 http://blog.numino.net/
例子:
69V2lz http://blog.numino.net/
alert(external.max_version);
n973FR http://blog.numino.net/
2. max_language_id - 传回 Maxthon 语言编码
J6lceN http://blog.numino.net/
例子:
M220RK http://blog.numino.net/
alert(external.max_language_id);
sXmftK http://blog.numino.net/
注意 Maxthon 2.0 和 Maxthon 1.X 所采用的语言编码格式并不相同
gVF1Ej http://blog.numino.net/
3. tab_count - 传回 Maxthon 打开的标签数量
bRHOck http://blog.numino.net/
例子:
fB750F http://blog.numino.net/
alert(external.tab_count);
o4PIk1 http://blog.numino.net/
4. cur_sel -传回 Maxthon 当前标签的 index
YEXVPy http://blog.numino.net/
例子:
v0LCK3 http://blog.numino.net/
alert(external.cur_sel);
1686MW http://blog.numino.net/
5. m2_plugin_folder( security_id , plugin_name ) - 传回指定插件目录位置
rTqx4e http://blog.numino.net/
例子:
P3F5gB http://blog.numino.net/
alert(external.m2_plugin_folder( %max_security_id , ViewSource! ));
rWgSyS http://blog.numino.net/
6. m2_run_cmd( security_id , command_id ) - 执行指定的 Command ID
2p3OaM http://blog.numino.net/
例子:external. m2_run_cmd( %max_security_id , 32772 ));
5hgkF9 http://blog.numino.net/
注意 Maxthon 2.0 和 Maxthon 1.X 所采用的 Command ID 并不相同,Command ID 可以在 Maxthon 的语言文件中找到
2tw9xl http://blog.numino.net/
7. get_tab( security_id , tab_index ) - 传回指定标签的 window object
3tmF1p http://blog.numino.net/
例子:
fLw5J3 http://blog.numino.net/
var oWin=external.get_tab(%max_security_id, 0);
bp53n8 http://blog.numino.net/
alert(oWin.document.URL);
0UnW7X http://blog.numino.net/
8. activate_tab( security_id , tab_index ) - 激活指定标签
G1v2j9 http://blog.numino.net/
例子:
oLy92v http://blog.numino.net/
external.activate_tab(%max_security_id, 0);
yuCqkh http://blog.numino.net/
9. close_tab( security_id , tab_index ) - 关闭指定标签
m0rjfW http://blog.numino.net/
例子:
X2Q4J8 http://blog.numino.net/
external.activate_tab(%max_security_id, 0);
veA2ZL http://blog.numino.net/
10. readFile( security_id, plugin_name, file_name) - 读取文本档案内容
EoDeHI http://blog.numino.net/
例子:
UPCCKe http://blog.numino.net/
var sText=external.readFile(%max_security_id, ViewPage, readme.txt);
9Y32HS http://blog.numino.net/
alert(sText);
5ZUABo http://blog.numino.net/
11. writeFile( security_id, plugin_name, file_name, content ) - 写入文本档案内容
6oNRNr http://blog.numino.net/
例子:
QA7VRa http://blog.numino.net/
external.writeFile(%max_security_id, ViewPage, test.txt, 测试);
E5kkr9 http://blog.numino.net/
12. m2_readIni( security_id, plugin_name , file_name , section_name , key , default_value) - 读取 INI 档案资料
pWWm08 http://blog.numino.net/
例子:
Usr9EE http://blog.numino.net/
var sDownloadTool=external.m2_readIni(%max_security_id, ViewPage, plugin.ini, Settings, DownloadTool, );
1Y5Eo7 http://blog.numino.net/
alert(sDownloadTool);
cEnj22 http://blog.numino.net/
13. m2_writeIni( security_id , plugin_name , file_name , section_name , key , value ) - 写入INI 档案资料
0D72dX http://blog.numino.net/
例子:
Vx8tWp http://blog.numino.net/
external.m2_writeIni(%max_security_id, ViewPage, test.ini, Config, height, 100px);
djqyjW http://blog.numino.net/
14. max_modelessDialog( security_id , url , option , attr , window ) - 传回非模式网页对话框
f03WfH http://blog.numino.net/
例子:
8u39yg http://blog.numino.net/
var oDialog= external.max_modelessDialog( %max_security_id , blank.html, window , , window );
7403Mx http://blog.numino.net/
var oDoc=oDialog.document;
20C4yR http://blog.numino.net/
oDoc.write(测试);
41xhGh http://blog.numino.net/
oDoc.close();
g3ZOD3 http://blog.numino.net/
15. max_activex(security_id ,program_id) -传回指定的 ActiveX object
Q8aotv http://blog.numino.net/
例子:
tg9Qko http://blog.numino.net/
var oWSH=external.max_activex(%max_security_id, WScript.Shell);
4T6S4w http://blog.numino.net/
oWSH.run(notepad.exe);
3Sre9k http://blog.numino.net/
16.max_callback(event_name) - 在 Maxthon 的一些事件发生时会被执行 (适用于 HTML 钮插件及 Script 侧边栏插件 )
AuRq7I http://blog.numino.net/
HTML 按钮插件及 Script 侧边栏插件可以加入 max_callback 函数以便对 Maxthon 浏览器发生的一些事件作出反映。比如撤换到另一个标签,或当前的标签重新加载等。
1b7z1L http://blog.numino.net/
例子:
8IxVvD http://blog.numino.net/
function max_callback(x){
60josF http://blog.numino.net/
if(x==tab_change) alert(Current tab is changed.);
Pxo8lP http://blog.numino.net/
}
M3qZnO http://blog.numino.net/
透过检查传回的 max_callback参数,插件可以探测一些在 Maxthon 浏览发生的事件,目前以下参数会被传回:
3bJbV9 http://blog.numino.net/
HTML 按钮插件
2JQWNz http://blog.numino.net/
tab_change – 当改变当前的标签後传回
4yqRW6 http://blog.numino.net/
document_Complete - 当前的标签页面加载後传回
Z3e9Iw http://blog.numino.net/
Script 侧边栏插件
4gzSLA http://blog.numino.net/
sidebar_tab_change -当改变当前的标签後传回
T3C96b http://blog.numino.net/
sidebar_activate - 当侧边栏插件被激活後传回
3aAS2N http://blog.numino.net/
sidebar_deactivate - 当侧边栏撤换到其他侧边栏项目後传回
67B18B http://blog.numino.net/
sidebar_unload - 当侧边栏插件被卸做载时传回
tznvGC http://blog.numino.net/
17. max_getObj (只适用于 Maxthon 2.0) -传回指定的 Maxthon object,包括:
Ao0q7l http://blog.numino.net/
Info - 关于Maxthon 的资料
4xs8vX http://blog.numino.net/
Adhunter – 关于广告猎手
fMfx63 http://blog.numino.net/
FavManager – 关于收藏
FZn9HF http://blog.numino.net/
RssManager – 关于 RSS
1BesUh http://blog.numino.net/
例子:
S4cE1f http://blog.numino.net/
var oInfo=external.max_getObj(%max_security_id, info);
3m5Bfc http://blog.numino.net/
Info Object 支持以下 properties 及 method:
5GOCno http://blog.numino.net/
Property:
8mkH8O http://blog.numino.net/
fileProxy - read-only,传回当前用户的代理设置文件位置
ORUnBc http://blog.numino.net/
例子:
5pnNkg http://blog.numino.net/
var oInfo=external.max_getObj(%max_security_id, info);
KyB9cy http://blog.numino.net/
alert(oInfo.fileProxy);
KY0noB http://blog.numino.net/
folderUser - read-only,传回当前用户的设置目录位置
QpU67H http://blog.numino.net/
例子:
zIwTBk http://blog.numino.net/
var oInfo=external.max_getObj(%max_security_id, info);
L9i8bm http://blog.numino.net/
alert(oInfo. folderUser);
4qyY18 http://blog.numino.net/
Method
kYbYxp http://blog.numino.net/
getFolderPluginData(plugin_name) - 传回指定插件的设置目录位置
aYzL6I http://blog.numino.net/
例子:
99Sl9N http://blog.numino.net/
var oInfo=external.max_getObj(%max_security_id, info);
5DSsX5 http://blog.numino.net/
alert(oInfo.getFolderPluginData(ViewSource!));
DJ6cfP http://blog.numino.net/
AdHunter object支持以下method:
I712Wg http://blog.numino.net/
Method:
0wY2Xb http://blog.numino.net/
reloadFilter(filter_name) – 插件可以修改 filter 的 xml 文件,然後用这个指令让 Maxthon 重新载入,目前只支持 content
p9Ygth http://blog.numino.net/
例子:
16bzkS http://blog.numino.net/
var oAdHunter=external.max_getObj(%max_security_id, AdHunter);
35UEmY http://blog.numino.net/
oAdHunter.reloadFilter(content);
12WGWh http://blog.numino.net/
enableFilter(filter_name, bEnable) – 插件可以用这个指令开启或关闭 Maxthon 的过滤功能,目前支持的 filter_name 为 content (内容过滤) 及popup (弹出窗口过滤)。bEnable 为 true 或 false
3L7VR2 http://blog.numino.net/
例子:
Ngna5j http://blog.numino.net/
var oAdHunter=external.max_getObj(%max_security_id, AdHunter);
vaQC1K http://blog.numino.net/
oAdHunter. enableFilter (content, false);
8c6f8A http://blog.numino.net/
PluginManager Object 支持以下 method:
oCKUVb http://blog.numino.net/
Method:
qFIAA1 http://blog.numino.net/
getPluginFolder - read only, 取得 Maxthon 的主插件目录
2GAzy8 http://blog.numino.net/
例子:
4hlerv http://blog.numino.net/
var oPluginManager=external.max_getObj(%max_security_id, PluginManager);
a0S5s3 http://blog.numino.net/
alert(oPluginManager.getPluginFolder);
uWm0Hs http://blog.numino.net/
getCount - read only, 取得所有安装插件的数量,包括启用及没启用的
VT0ioK http://blog.numino.net/
例子:
j9A353 http://blog.numino.net/
var oPluginManager=external.max_getObj(%max_security_id, PluginManager);
0uZh62 http://blog.numino.net/
alert(oPluginManager.getCount);
OyglKP http://blog.numino.net/
getList - read only, 取得插件清单,包括名字,作者等讯息
5Ylo2c http://blog.numino.net/
例子:
L3boPH http://blog.numino.net/
var oPluginManager=external.max_getObj(%max_security_id, PluginManager);
fTg7MR http://blog.numino.net/
alert(oPluginManager.getList);
V5KCp4 http://blog.numino.net/
getCount - read only, 取得所有安装插件的数量,包括启用及没启用的
BQCgUb http://blog.numino.net/
例子:
9t0Iu9 http://blog.numino.net/
var oPluginManager=external.max_getObj(%max_security_id, PluginManager);
BF4kmt http://blog.numino.net/
alert(oPluginManager.getCount);
3B2N53 http://blog.numino.net/
getList - read only, 取得插件清单,包括名字,作者等讯息
jhs8i1 http://blog.numino.net/
例子:
8G6x2w http://blog.numino.net/
var oPluginManager=external.max_getObj(%max_security_id, PluginManager);
Ui8c12 http://blog.numino.net/
alert(oPluginManager.getList);
Rz59Q8 http://blog.numino.net/
getPlugin(Index) - Index 为数字,取得对应的插件对象
3BP07x http://blog.numino.net/
例子:
uG91S3 http://blog.numino.net/
var oPluginManager=external.max_getObj(%max_security_id, PluginManager);
v7FS4p http://blog.numino.net/
var oPlugin=oPluginManager.getPlugin(0);
z8TzV2 http://blog.numino.net/
由 getPlugin 取得的插件对象支持以下 property 及 method:
C0AA0i http://blog.numino.net/
Property:
3idFnk http://blog.numino.net/
title - read only, read only, 传回插件的名字
P925J2 http://blog.numino.net/
例子:
GEkoTd http://blog.numino.net/
alert(oPlugin.title);
4786D8 http://blog.numino.net/
folderName - read only, 传回插件的目录名称
50U4Aw http://blog.numino.net/
例子:
LAI3B7 http://blog.numino.net/
alert(oPlugin.folderName);
5tpH6q http://blog.numino.net/
fullPath - read only, 传回插件的目录的完整地址
nZ00n7 http://blog.numino.net/
例子:
AZE5RV http://blog.numino.net/
alert(oPlugin.fullPath);
LCC3qm http://blog.numino.net/
enable - read/write, 传回或设置插件的启用状态
2W0YON http://blog.numino.net/
例子:
5ySX1r http://blog.numino.net/
oPlugin.enable=false;
PA4zF6 http://blog.numino.net/
alert(oPlugin.enable);
BB9wdQ http://blog.numino.net/
oPlugin.enable=true;
1Gua22 http://blog.numino.net/
alert(oPlugin.enable);
5AUUr3 http://blog.numino.net/
startAfterPageDone - read/write, 传回或设置插件是否自动执行
jAP6Sq http://blog.numino.net/
例子:
DX48bq http://blog.numino.net/
oPlugin.startAfterPageDone=false;
947UAw http://blog.numino.net/
alert(oPlugin.startAfterPageDone);
TwfrR4 http://blog.numino.net/
oPlugin.startAfterPageDone=true;
8JyjPt http://blog.numino.net/
alert(oPlugin.startAfterPageDone);
n6P9B7 http://blog.numino.net/
startAfterPageDoneUrl - read/write, 传回或设置插件自动执行的地址
Gq4k4A http://blog.numino.net/
例子:
1uh3lW http://blog.numino.net/
oPlugin.startAfterPageDoneUrl=*maxthon.com*|*maxthon.cn*
7FMOmq http://blog.numino.net/
alert(oPlugin.startAfterPageDoneUrl)
ad4Sz1 http://blog.numino.net/
Method:
B90Nor http://blog.numino.net/
config() - 打开插件的设置对话框 (config.html)
433MQs http://blog.numino.net/
例子:
mkG2zT http://blog.numino.net/
oPlugin.config();
WpV0eX http://blog.numino.net/
remove() - 删除插件
6J0Xg0 http://blog.numino.net/
例子:
9Ma8PQ http://blog.numino.net/
oPlugin.remove();
51e6Gu http://blog.numino.net/
Mscript
29y4GB http://blog.numino.net/
Maxthon 2.0 提供额外的 mscript 脚本执行方式供 Script 按钮插件使用。和一般脚本不同,mscript 并非在页面上执行脚本,因此 mscript 可以不受一般网页脚本安全限制,亦不用担心被网页恶意利用。mscript 可以在页面禁用脚本情况下执行,也可以处理页面内跨域的框架内容,能大大提升 Script 按钮插件能力。要在 Script 按钮插件采用 mscript 方式执行脚本,只需把 <script...> 标签改为 <mscript...>。
6YY1NT http://blog.numino.net/
例子 - 以下的是一般 Script 按钮插件,可以透过内容控制禁止当前页面执行脚本:
4q0wcK http://blog.numino.net/
<script language="javascript">
LvnjC6 http://blog.numino.net/
external.m2_run_cmd(%max_security_id, 33175);
kS1VAq http://blog.numino.net/
</script>
Kw2Mi0 http://blog.numino.net/
但在插件运行後页面已经不能执行脚本,插件不能再次运行恢复在当前页面执行脚本。然而使用以下的 mscript 则没有这问题,在页面不能执行脚本情况下,mscript 插件仍然可以运行,恢复在当前页面执行脚本:
j3VvZa http://blog.numino.net/
<mscript language="javascript">
3bMuRN http://blog.numino.net/
external.m2_run_cmd(0, 33175);
2x77Vl http://blog.numino.net/
</script>
更多相关内容...>>傲游浏览器插件制作教程

Bug报告 |  免责声明 |  联系我们 |  加入收藏

Copyright © 2006 NuminoStudio(www.numino.net) All Rights Reserved