2012-04-14 13 views
0

Ich habe Javascript-Code (Fenster/firefox), die eine URLComponents.interfaces.nsIProcess kürzt eine URL Argument, das enthält "&"

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

mit startet Der Befehl cmd/c starten myURL

Dies funktioniert für die meisten Fälle, außer wenn die URL enthält eine &, wie

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

abgeschnitten wird

Von einer Befehlszeile aus passiert das Gleiche, aber das Angeben von Anführungszeichen um die URL löst das Problem.

Also, habe ich Anführungszeichen um meine URL in mein Javascript, aber dann produziert Fenster diesen Fehler, wenn doppelte Anführungszeichen verwendet:

Windows kann nicht finden ‚\ http: //www.google.com/search ? q = Robert + Doisneau & ct = doisneau12-hp & oi = ddle \ '. Stellen Sie sicher, dass Sie den Namen richtig eingegeben haben, und versuchen Sie es erneut.

Was macht der NSIProcess anders, wenn ich die URL in Anführungszeichen gebe, und wie kann ich das vermeiden? Oder wie kann ich meine URL so umformen, dass sie nicht unter & gekürzt wird? Ich kann das & mit% 26 nicht ersetzen, da es nicht Teil des Textes ist, wird es verwendet, um die Parameter zu übergeben.

Antwort

0

Es ist seltsam, wie ich es nicht von der Kommandozeile arbeiten gehen kann, wie Sie erwähnen:

  • Ohne etwas hinzuzufügen, erhalte ich abgeschnittene URL
  • Wenn ich doppelte Anführungszeichen in der Befehlszeile um die URLs hinzufügen Ich bekomme einfach das neue Kommandozeilenfenster geöffnet.
  • Wenn ich einfache Anführungszeichen (Apostroph) hinzufügen, erhalte ich die Fehlermeldung.
0

Warum versuchen Sie, die URL über nsIProcess zu starten? Laden Sie einfach die URL in eine Browser-Registerkarte, und wenn Firefox es nicht versteht, wird automatisch aufgefordert, den System-Handler für dieses Protokoll aufzurufen.

2

Ich denke ich weiß was passiert. CMD kann mehrere Befehle als Argument verwenden, wobei jedes durch das Zeichen & und die gesamte in Anführungszeichen eingeschlossene Liste getrennt ist. Das Format für mehrere Argumente ist CMD/c "arg & arg & arg". Somit wird & als Beginn eines neuen Arguments interpretiert.

Das Escape-Zeichen in CMD-Argumenten ist ^. Sie müssen also Folgendes ausführen:

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

Beachten Sie, dass das Angebot vor START beginnt und nach der URL endet. Dieser ganze Teil ist ein Argument, das an CMD übergeben wurde. Ich bin nicht sicher aus der Hand, wenn NSIProcess Argumente automatisch zitiert, so dass Sie viele damit experimentieren müssen.

+0

Danke @James!Genau das musste ich beheben. Es hat mich das ganze Wochenende über ratlos gemacht. Ich habe nie die Informationen über die & in irgendeiner der Dokumente gesehen, die ich gefunden habe. –

+0

@MarybethMarkland Wenn dies die Antwort auf Ihre Frage ist, kreuzen Sie bitte "v" an, damit es als gelöst markiert wird. –

Verwandte Themen