2012-04-14 11 views
0

私はjavascriptのコードを持って(ウィンドウ/ Firefoxの)コマンドはCMDであるComponents.interfaces.nsIProcessが含まれているURL引数を切り捨て "&"

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

を使用してURLを起動/開始cはMYURL

これは

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

http://www.google.com/search?q=Robert+Doisneau

に切り捨てられ、URLが&が含まれている場合を除き、ほとんどの場合のために働きます

コマンドラインからも同じことが起こりますが、URLを引用符で囲むことで問題は解決します。二重引用符を使用するとき

だから、私はJavaScriptで私のURLの前後に引用符を置くが、その後Windowsがこのエラーを生成します。

のWindows を見つけることができません「\のhttp://www.google.com/search ?q = Robert + Doisneau & ct = doisneau12-hp & oi = ddle \ '。 名前を正しく入力したことを確認してから、もう一度お試しください。

URLを引用符で渡すと、nsIProcessの処理はどうなるのですか?どのように回避できますか?または、URLを再フォーマットして、&で切り捨てられないようにするにはどうすればよいですか? &を%26に置き換えることはできません。テキストの一部ではないため、パラメータを渡すために使用されます。

答えて

0

あなたが述べたように、私はそれは、コマンドラインから作業を得ることができないとしてそれは、奇妙だ:

  • 何かを追加することなく、私は私がURLの周りに、コマンドラインで二重引用符を追加切り捨てURL
  • 取得します、私は単に新しいコマンドラインウィンドウを開いた。
  • 一重引用符(アポストロフィ)を追加すると、エラーメッセージが表示されます。
0

なぜnsIProcessでURLを起動しようとしていますか?ブラウザのタブにURLを読み込んでください。Firefoxがそれを理解できない場合は、自動的にそのプロトコルのシステムハンドラを呼び出すように促します。

2

私は何が起こっているか知っていると思います。 CMDはいくつかのコマンドを引数として取り、それぞれを&文字で区切り、リスト全体を引用符で囲みます。

複数の引数の形式は、 "arg & arg & arg"です。したがって、&は新しい引数の開始として解釈されます。

CMD引数のエスケープ文字は^です。したがって、実行する必要があります:

CMD /C "START http://www.google.com/search?q=Robert+Doisneau^&ct=doisneau12-hp^&oi=ddle" 

引用符は、開始前に開始され、URLの後に終了することに注意してください。その部分全体がCMDに渡された1つの議論です。 nsIProcessが引数を自動引用符で囲むと、手を引くことができません。そのために多くのことを試す必要があります。

+0

ありがとう@ジェームス!それはまさに私がこれを解決するために必要なものでした。私は週末のうちに大騒ぎしていました。私が見つけたドキュメントの中の&についての情報は見たことがありません。 –

+0

@MarybethMarklandこれがあなたの質問に対する答えであれば、その隣の "v"にチェックをして解決済みとマークしてください。 –

関連する問題