javascript - Components.interfaces.nsIProcess chop 包含 "&"的 URL 参数

标签 javascript windows firefox

我有 javascript 代码(windows/firefox),它使用启动 URL

    var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces.nsIProcess);

命令是 cmd/c start MYURL

这适用于大多数情况,除非 URL 包含 &,例如

http://www.google.com/search?q=Robert+Doisneau&ct=doisneau12-hp&oi=ddle 被 chop 为 http://www.google.com/search?q=Robert+Doisneau

从命令行也会发生同样的情况,但在 URL 周围加上引号可以解决问题。

因此,我在 javascript 中在 URL 两边加了引号,但是当使用双引号时 Windows 会产生此错误:

Windows cannot find '\http://www.google.com/search?q=Robert+Doisneau&ct=doisneau12-hp&oi=ddle\'. Make sure you typed the name correctly, and then try again.

当我在引号中传递 URL 时,nsIProcess 会做什么不同的事情,如何避免这种情况?或者如何重新构造我的 URL,使其不会在 & 处被 chop ?我无法将 & 替换为 %26,因为它不是文本的一部分,它用于传递参数。

最佳答案

我想我知道发生了什么。 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 是否自动引用参数,因此您需要对此进行试验。

关于javascript - Components.interfaces.nsIProcess chop 包含 "&"的 URL 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10157485/

相关文章:

javascript - 在 Rickshaw.js 中设置 Y 轴网格密度

windows - pip 安装错误,freetype 和 libpng 丢失 (Windows)

javascript - getusermedia 在 Firefox 中不工作

javascript - 打破 JavaScript ES6 函数不使用 return

javascript - php facebook sdk 不会在 wordpress 中创建用户

windows - 使用批处理删除文件夹中除列表中文件之外的所有文件

c# - 任务栏上的子组

javascript - 检测用户何时单击链接但中止

css - 为什么这在 Chrome 和 Firefox 3.6 之间呈现不同?

javascript - 无法从javascript中的foreach回调将html内容输出到页面