阅读:3316回复:8
如何在OSX下用AddmenuPlus调用Safari打开网页?
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" }, |
|
1楼#
发布于:2015-06-15 14:05
人呢?高手呢?大神呢?
为啥没人理我呢? |
|
2楼#
发布于:2015-06-15 14:34
恐怕这跟 Safari 甚至 MacOS 怎么响应这些参数相关……而这里用Mac的高手可能还没看到你这帖……
建议把标题丰富一下,例如“在MacOS下怎么通过AddmenuPlus脚本在Safari中打开Firefox链接?” |
|
|
3楼#
发布于:2015-06-15 16:25
高手和大神都很忙的
你这问题明明可以自己解决 browser console 是会打出错误信息的 而如何在 osx 下调用 safari 打开网址也很容易找到 去 google 关键词,比如 osx safari open url command line 至于 safari / open / applescript 哪个适合你 那得根据你的实际情况来看 |
|
|
4楼#
发布于:2015-06-15 20:19
|
|
5楼#
发布于:2015-06-15 20:20
|
|
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); |
|
7楼#
发布于:2015-06-15 21:37
taoww:你直接用exec: "/Applications/Safari.app" 试试?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 |
|
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" |
|