|
阅读:3090回复:1
求修改uc脚本externalApplications.uc.js
这个脚本的作用是加载外部应用程序快捷方式(在菜单栏和状态栏),代码如下:
// ==UserScript==
// @name externalApplications.uc.js
// @namespace ithinc#mozine.cn
// @description External Applications
// @include main
// @compatibility Firefox 3.5.x 3.6.x
// @author ithinc
// @version 20091216.1.0.0 Final release
// @version 20091215.0.0.2 Handle toolbar apps and menu apps separately
// @version 20091212.0.0.1 Initial release
// ==/UserScript==
/* :::: External Applications :::: */
var gExternalApplications = {
toolbar: {
apps: [
//{name: 'Notepad', path: '/WINDOWS/system32/notepad.exe'},
{name: 'Calculator', path: 'C:\\WINDOWS\\system32\\calc.exe'},
{name: 'freegate', path: 'F:\\360download\\fg709a.exe'},
//{name: 'separator'},
{name: 'Internet Explorer', path: 'C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE', args: ['%u']},
//{name: 'Command Prompt', path: 'C:\\WINDOWS\\system32\\cmd.exe'},
],
insertafter: 'status-bar' //'menubar-items' or 'home-button'
},
menu: {
apps: [
//{name: 'Notepad', path: '/WINDOWS/system32/notepad.exe'},
{name: 'Calculator', path: 'C:\\WINDOWS\\system32\\calc.exe'},
//{name: 'Command Prompt', path: 'C:\\WINDOWS\\system32\\cmd.exe'},
//{name: 'separator'},
//{name: 'UltraEdit', path: 'C:\\Program Files\\IDM Computer Solutions\\UltraEdit-32\\uedit32.exe'},
//{name: 'Total Commander', path: 'U:\\Programs\\Total Commander\\TOTALCMD.EXE'},
//{name: 'separator'},
//{name: 'My Computer', path: 'c:\\windows\\explorer.exe'},/*x为系统盘符*/
{name: 'Internet Explorer', path: 'C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE', args: ['%u']},//外部浏览器打开当前页,使用参数%u
// {name: 'Maxthon', path: 'C:\\Program Files\\Maxthon\\Maxthon.exe', args: ['%u']},
// {name: 'Namoroka', path: 'D:\\Program Files\\Namoroka3.6b5pre\\firefox.exe', args: ['-no-remote', '-P blank']},
// {name: 'separator'},
//{name: 'Profile', path: 'C:\\Documents and Settings\\linus\\Application Data\\Mozilla\\Firefox\\Profiles\\c4r67s72.default'},
],
insertafter: 'tools-menu', //'helpMenu', 'tools-menu' or 'browserToolsSeparator'
label: 'ExtApps',
accesskey: 'A'
},
init: function() {
this.handleRelativePath(this.toolbar.apps);
this.handleRelativePath(this.menu.apps);
if (this.toolbar.apps.length > 0) {
var refNode = document.getElementById(this.toolbar.insertafter);
if (refNode) {
refNode.parentNode.insertBefore(this.createToolbaritem(this.toolbar.apps), refNode.nextSibling);
}
}
if (this.menu.apps.length > 0) {
var refNode = document.getElementById(this.menu.insertafter);
if (refNode) {
var menu = refNode.parentNode.insertBefore(document.createElement('menu'), refNode.nextSibling);
menu.setAttribute('label', this.menu.label);
menu.setAttribute('accesskey', this.menu.accesskey);
menu.appendChild(this.createMenupopup(this.menu.apps));
}
}
},
handleRelativePath: function(apps) {
for (var i=0; i<apps.length; i++) {
if (apps[i].path) {
apps[i].path = apps[i].path.replace(/\//g, '\\');
var ffdir = Cc['@mozilla.org/file/directory_service;1'].getService(Ci.nsIProperties).get('CurProcD', Ci.nsIFile).path;
if (/^(\.)/.test(apps[i].path)) {
apps[i].path = ffdir + '\\' + apps[i].path;
}
else if (/^(\\)/.test(apps[i].path)) {
apps[i].path = ffdir.substr(0,2) + apps[i].path;
}
}
}
},
exec: function(path, args) {
args = args || [];
for (var i=0; i<args.length; i++) {
args[i] = args[i].replace(/%u/g, gBrowser.currentURI.spec);
}
var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile);
file.initWithPath(path);
if (!file.exists()) {
Cu.reportError('File Not Found: ' + path);
return;
}
if (!file.isExecutable()) {
file.launch();
}
else {
var process = Cc['@mozilla.org/process/util;1'].createInstance(Ci.nsIProcess);
process.init(file);
process.run(false, args, args.length);
}
},
createToolbaritem: function(apps) {
var toolbaritem = document.createElement('toolbaritem');
toolbaritem.setAttribute('class', 'chromeclass-toolbar-additional');
toolbaritem.setAttribute('orient', 'horizontal');
for (var i=0; i<apps.length; i++) {
if (apps[i].name == 'separator') {
toolbaritem.appendChild(document.createElement('toolbarseparator'));
}
else {
var item = toolbaritem.appendChild(document.createElement('toolbarbutton'));
item.setAttribute('class', 'toolbarbutton-1 chromeclass-toolbar-additional');
item.setAttribute('label', apps[i].name);
item.setAttribute('image', 'moz-icon:file://' + apps[i].path + '?size=16;');
item.setAttribute('oncommand', 'gExternalApplications.exec(this.path, this.args);');
item.setAttribute('tooltiptext', apps[i].name);
item.setAttribute('style','margin: 0px -4px;background: none;box-shadow: none;border-color: transparent;'); //dawlen add
item.path = apps[i].path;
item.args = apps[i].args;
}
}
return toolbaritem;
},
createMenupopup: function(apps) {
var menupopup = document.createElement('menupopup');
for (var i=0; i<apps.length; i++) {
if (apps[i].name == 'separator') {
menupopup.appendChild(document.createElement('menuseparator'));
}
else {
var item = menupopup.appendChild(document.createElement('menuitem'));
item.setAttribute('class', 'menuitem-iconic');
item.setAttribute('label', apps[i].name);
item.setAttribute('image', 'moz-icon:file://' + apps[i].path + '?size=16');
item.setAttribute('oncommand', 'gExternalApplications.exec(this.path, this.args);');
item.path = apps[i].path;
item.args = apps[i].args;
}
}
return menupopup;
}
};
gExternalApplications.init();现在用这个脚本有个问题,就是每次点击状态栏的ie图标时打开的网址都是第一次点击ie图标图标时的那个网页的网址,比如说:我现在的标签页是新浪,然后我点击状态栏的ie图标,就在ie里打开了新浪;然后我在火狐里打开了另外一个标签页腾讯,再次点击状态栏的ie图标,结果ie打开的是新浪而不是腾讯 这个问题只出现在点击状态栏的图标时,而点击菜单栏的ExtApps菜单就不会有这个问题 本人是代码小白,曾尝试将菜单栏的ExtApps菜单改为显示到状态栏,书签栏,但是间距太大了,不好看,求路过的高手修改这个脚本!(firefox 14 b11,windows 7) |
|
|
1楼#
发布于:2012-07-08 09:37
LZ想要的效果就是用IE打开当前的网页?这个鼠标手势也可以。
const IE_PATH = "C:\\Program Files\\Internet Explorer\\iexplore.exe";var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);file.initWithPath(IE_PATH);if (!file.exists()) { alert("File does not exist: " + IE_PATH); return;}var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);try { var args = [window.content.location.href]; process.init(file); process.run(false, args, args.length);}catch (ex) { alert("Failed to execute: " + IE_PATH);} |
|
