Firefox 附加组件无法通过 cmd 使用参数启动 iexplore URL
Firefox Add-On can't start iexplore URL with parameters via cmd
我正在使用 Firefox 附加组件。我想使用此命令行执行 IE:
cmd /C start iexplore http://www.google.com
这很好用。但是如果非要用参数,就不行了:
cmd /C start iexplore https://www.google.hu/?gfe_rd=cr&ei=r9frVbawJZChOomkqIgH&gws_rd=ssl#q=find
问题是传递的文本将在第一个“&”字符处被截断。如果我将 url 放入引号中,它会再次起作用。
所以我使用这段代码来实现插件:
getIEPath: function () {
var gMyPrefs = new PrefsWrapper1("extensions.openinbrowser.");
var iePath = gMyPrefs.getUnicharPref("IEPath");
return iePath;
},
openInBrowser: function (url) {
var iePath = openinbrowser.getIEPath();
// create an nsILocalFile for the executable
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(iePath);
// create an nsIProcess
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
// Run the process
var args = ['/C start iexplore ' + url + ' '];
process.run(false, args, args.length);
}
这适用于第一种情况:如果字符串中没有“&”字符,则适用。但是如果我把关键线换成
var args = ['/C start iexplore "' + url + '" '];
它将不起作用,因为 "
将被交换为 URI 代码,但 URI 代码在 IE 中不起作用。
你知道解决方案是什么吗(我知道没有 cmd
它可以工作等等,但我需要这个 cmd
启动解决方案)
您可以使用脱字符 ^
转义 &
字符:
cmd /C start iexplore https://www.google.hu/?gfe_rd=cr^&ei=r9frVbawJZChOomkqIgH&gws_rd=ssl#q=find
或者简单地将 URL 括在一对引号中 "
:
cmd /C start "" iexplore "https://www.google.hu/?gfe_rd=cr&ei=r9frVbawJZChOomkqIgH&gws_rd=ssl#q=find"
由于 start
将第一个引用的字符串解释为 window 标题,我添加了一个空字符串 ""
.
我正在使用 Firefox 附加组件。我想使用此命令行执行 IE:
cmd /C start iexplore http://www.google.com
这很好用。但是如果非要用参数,就不行了:
cmd /C start iexplore https://www.google.hu/?gfe_rd=cr&ei=r9frVbawJZChOomkqIgH&gws_rd=ssl#q=find
问题是传递的文本将在第一个“&”字符处被截断。如果我将 url 放入引号中,它会再次起作用。
所以我使用这段代码来实现插件:
getIEPath: function () {
var gMyPrefs = new PrefsWrapper1("extensions.openinbrowser.");
var iePath = gMyPrefs.getUnicharPref("IEPath");
return iePath;
},
openInBrowser: function (url) {
var iePath = openinbrowser.getIEPath();
// create an nsILocalFile for the executable
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(iePath);
// create an nsIProcess
var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
process.init(file);
// Run the process
var args = ['/C start iexplore ' + url + ' '];
process.run(false, args, args.length);
}
这适用于第一种情况:如果字符串中没有“&”字符,则适用。但是如果我把关键线换成
var args = ['/C start iexplore "' + url + '" '];
它将不起作用,因为 "
将被交换为 URI 代码,但 URI 代码在 IE 中不起作用。
你知道解决方案是什么吗(我知道没有 cmd
它可以工作等等,但我需要这个 cmd
启动解决方案)
您可以使用脱字符 ^
转义 &
字符:
cmd /C start iexplore https://www.google.hu/?gfe_rd=cr^&ei=r9frVbawJZChOomkqIgH&gws_rd=ssl#q=find
或者简单地将 URL 括在一对引号中 "
:
cmd /C start "" iexplore "https://www.google.hu/?gfe_rd=cr&ei=r9frVbawJZChOomkqIgH&gws_rd=ssl#q=find"
由于 start
将第一个引用的字符串解释为 window 标题,我添加了一个空字符串 ""
.