好人好梦
火狐狸
火狐狸
  • UID26935
  • 注册日期2008-11-06
  • 最后登录2019-10-30
  • 发帖数239
  • 经验76枚
  • 威望0点
  • 贡献值20点
  • 好评度4点
  • 社区居民
阅读:2014回复:8

如何在OSX下用AddmenuPlus调用Safari打开网页?

楼主#
更多 发布于:2015-06-14 11:23
AddmenuPlus中调用外部程序的命令是这样的
{
    label: "Internet Explorer",
    text: "%u",
    exec: "C:\\Program Files\\iexplorer.exe",
    accesskey: "I",
    condition: "nolink"
},
但在MAC下把路径直接替换为“/Applications/Safari.app/Contents/MacOS/Safari”无效,请教要怎样写?
现在改成这样可以调Safri了,但无法传递网址!
{
        label: "Safari0",
        text: "%u",
        oncommand: function(event) {
            var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile);
file.initWithPath("/Applications/Safari.app");
file.launch();
        },
        accesskey: "I",
        condition: "nolink"
    },
好人好梦
火狐狸
火狐狸
  • UID26935
  • 注册日期2008-11-06
  • 最后登录2019-10-30
  • 发帖数239
  • 经验76枚
  • 威望0点
  • 贡献值20点
  • 好评度4点
  • 社区居民
1楼#
发布于:2015-06-15 14:05
人呢?高手呢?大神呢?
为啥没人理我呢?
hzhbest
千年狐狸
千年狐狸
  • UID22640
  • 注册日期2008-01-15
  • 最后登录2017-04-06
  • 发帖数1763
  • 经验476枚
  • 威望3点
  • 贡献值414点
  • 好评度89点
  • 社区居民
  • 忠实会员
2楼#
发布于:2015-06-15 14:34
恐怕这跟 Safari 甚至 MacOS 怎么响应这些参数相关……而这里用Mac的高手可能还没看到你这帖……
建议把标题丰富一下,例如“在MacOS下怎么通过AddmenuPlus脚本在Safari中打开Firefox链接?”
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2019-11-14
  • 发帖数1918
  • 经验1132枚
  • 威望1点
  • 贡献值232点
  • 好评度161点
3楼#
发布于:2015-06-15 16:25
高手和大神都很忙的
你这问题明明可以自己解决

browser console 是会打出错误信息的
而如何在 osx 下调用 safari 打开网址也很容易找到
去 google 关键词,比如 osx safari open url command line
至于 safari / open / applescript 哪个适合你
那得根据你的实际情况来看
好人好梦
火狐狸
火狐狸
  • UID26935
  • 注册日期2008-11-06
  • 最后登录2019-10-30
  • 发帖数239
  • 经验76枚
  • 威望0点
  • 贡献值20点
  • 好评度4点
  • 社区居民
4楼#
发布于:2015-06-15 20:19
hzhbest:恐怕这跟 Safari 甚至 MacOS 怎么响应这些参数相关……而这里用Mac的高手可能还没看到你这帖……
建议把标题丰富一下,例如“在MacOS下怎么通过AddmenuPlus脚本在Safari中打开Firefox链接?”
回到原帖
多谢建议!
好人好梦
火狐狸
火狐狸
  • UID26935
  • 注册日期2008-11-06
  • 最后登录2019-10-30
  • 发帖数239
  • 经验76枚
  • 威望0点
  • 贡献值20点
  • 好评度4点
  • 社区居民
5楼#
发布于:2015-06-15 20:20
aaaa007cn:高手和大神都很忙的
你这问题明明可以自己解决

browser console 是会打出错误信息的
而如何在 osx 下调用 safari 打开网址也很容易找到
去 google 关键词,比如 osx safari open url com...
回到原帖
搜索了,但不知道如何把它加到这里面去呀
taoww
狐狸大王
狐狸大王
  • UID39284
  • 注册日期2013-03-18
  • 最后登录2019-11-08
  • 发帖数459
  • 经验416枚
  • 威望0点
  • 贡献值98点
  • 好评度72点
6楼#
发布于:2015-06-15 20:25
你直接用exec: "/Applications/Safari.app" 试试?
如果不行的话,用nsIProcess接口:https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcess
差不多就是把file.launch();换成
var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
process.init(file)
var args= ["http://www.firefox.net.cn"];
process.run(false, args, args.length);
好人好梦
火狐狸
火狐狸
  • UID26935
  • 注册日期2008-11-06
  • 最后登录2019-10-30
  • 发帖数239
  • 经验76枚
  • 威望0点
  • 贡献值20点
  • 好评度4点
  • 社区居民
7楼#
发布于:2015-06-15 21:37
taoww:你直接用exec: "/Applications/Safari.app" 试试?
如果不行的话,用nsIProcess接口:https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPC...
回到原帖
exec试过,没反应,按这个写也没反应,是不是这几行代码需要修改哪些参数才能用?
现在是这样:
{
        label: "Safari0",
        oncommand: function(event) {
            var file = Cc['@mozilla.org/file/local;1'].createInstance(Ci.nsILocalFile);
file.initWithPath("/Applications/Safari.app");
            var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
            var args = ["argument1", "argument2"];
process.run(false, args, args.length);
        }
    },
报错
时间戳:15/6/15 下午9:41:54
错误: NS_ERROR_FAILURE: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIProcess.init]
源文件:chrome://browser/content/browser.xul
行:5
taoww
狐狸大王
狐狸大王
  • UID39284
  • 注册日期2013-03-18
  • 最后登录2019-11-08
  • 发帖数459
  • 经验416枚
  • 威望0点
  • 贡献值98点
  • 好评度72点
8楼#
发布于:2015-06-17 00:06
看来nsiprocess不支持执行应用,那就把file.initWithPath的参数改回/Applications/Safari.app/Contents/MacOS/Safari
另外macos下的safari似乎不支持直接传递url参数,你还需要用applescript:
osascript -e 'tell application "Safari" to open location "http://www.firefox.net.cn"'
找一下osascrip的路径,同样用nsiprocess来执行。

或者干脆试试用open命令
open -a Safari "http://www.firefox.net.cn"
游客

返回顶部