我有javascript代码(windows / firefox),使用
启动网址 var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);
该命令是cmd / c start MYURL
这适用于大多数情况,除非网址包含&,例如
http://www.google.com/search?q=Robert+Doisneau&ct=doisneau12-hp&oi=ddle 被截断为 http://www.google.com/search?q=Robert+Doisneau
从命令行发生同样的事情,但在URL周围加上引号可以解决问题。
所以,我在我的javascript中输入了我的网址,但是当使用双引号时,windows会产生此错误:
Windows无法找到 '?\ HTTP://www.google.com/search Q =罗伯特+杜瓦诺&安培; CT = doisneau12马力&安培; OI = ddle \'。 确保正确输入名称,然后重试。
当我在引号中传递URL时,nsIProcess的做法有何不同,我该如何避免?或者我如何重新形成我的网址,以便它不会在&?处被截断我无法取代&使用%26,因为它不是文本的一部分,它用于传递参数。
答案 0 :(得分:2)
我想我知道发生了什么。 CMD可以将几个命令作为参数,每个命令由&分隔。字符和引号括起来的整个列表。
多个参数的格式是CMD / c“arg& arg& arg”。因此&被解释为新论证的开始。
CMD参数中的转义字符是^。所以你需要运行:
CMD /C "START http://www.google.com/search?q=Robert+Doisneau^&ct=doisneau12-hp^&oi=ddle"
请注意,引用在START之前开始,在url之后结束。整个部分是传递给CMD的一个论点。如果nsIProcess自动引用参数,我不确定,所以你需要对它进行实验。
答案 1 :(得分:0)
这很奇怪,因为我提到的命令行无法使用它:
答案 2 :(得分:0)
您为什么要尝试通过nsIProcess
启动网址?只需在浏览器选项卡中加载URL,如果Firefox不理解它,它将自动提示调用该协议的系统处理程序。