Verwenden von Backslash ( " \ " )
Henna
- javascript
Hallo
Ich hab ein Problem mit den Backslash.
Für eine Suche muss ich die Suchtreffer mit Javascript aufbereiten.
Das klappt auch super. Nur leider kommt bei den Suchtreffer manchmal ein " \ " vor. Dies bewirkt, das das Script aussteigt und dieser Treffer nicht angezeigt wird. So werden z.B. nur 2 von 3 Treffern ausgegeben. Ich muss also die "" ersetzn. Dies geht aber nicht, da ich ja dann acu ein "" in den Quelltext einbauen müsste.
Hat jemand eine Lösung für das Problem?
Ich poste hier einen Teil der Sourde wie sie im hinterher aussieht.
Hoffentlich kann mir jemand helfen.
Gruß Henna
</tr>
</table>
<hr>
<!-- The begindetail/enddetail section describes how each row of output is be formatted. The sample below prints: - record number - document title (if one exists) or virtual path of the file - the abstract for the file - the url for the file - the file's size and last write time - an HREF to the file for the hit highlighter. The parameters the hit highlighter include the CiQueryFile and CiTemplateFile. The CiQueryFile is not really needed as long as you don't have any custom properties. However, if you add custom properties, make sure the .idq file you use for queries is same as the one specified for CiQueryFile. The CiTemplateFile is used by webhits to format the output text.-->
<script language="JavaScript">
// funktion zum starten von Word
function PAWAufruf2(datei)
{
var shell
var datei
shell = new ActiveXObject('Wscript.shell');
shell.run('"d:\program files\microsoft office\office\winword.exe "' + datei);
}
// Hier steht der Teil der durch der Q: ersetzt werden soll.
// Wichtig dabei ist, das alle Sonderzeichen durch ein "%" mud den Hex-Wert ersetzt werden. (z.B. '' als '%5C')
var ServerKonst = "%5C%5Ckp07s012%5Cusr";
// Es werden die Varablen der Suchergebnisse in Variablen des Script geschrieben
var Beschreibung = "Installationen. tallation Ersteller: JasperH Erstelldatum: 16.09.99 Beschreibung: Installation Remedy User z:install\remedy\usertool\setup.exe aufrufen. Sprache wählen (vorzugsweise German! Standardeinstellungen belassen, bis Frage nach Remedy-Server erscheint. Button „hinzufügen. anklicken";
var Zwischen = "%5C%5Ckp07s012%5Cusr%5Cdept%5Ca831%5Cserviceweb%5Cinstallationen%5Cremedy%20installation.doc";
// Es wird der Servername und Pfad durch den Buchstaben ersetzt.
var Zwischen2 = Zwischen.replace(ServerKonst, "S:");
// Deklaration der Variablen die im Script benötigt werden.
var Zwischen3;
var Zeichen;
var Position;
var Marker;
var Link;
var Last3;
// Alle "" werden hier durch ein "/" ersetzt.
// Dies wird auch über den Hex-Wert gemacht, da in dem String alle Sonderzeichen als Hex-Wert vorkommen.
do {
Zwischen3 = Zwischen2.replace("%5C", "/");
Zwischen2 = Zwischen3;
Marker = Zwischen2.search("%5C");
} while(Marker != -1);
// Nun werden alle anderen Sonderzeichen, die noch als Hex-Wert in dem String stehen in ihre Zeichen verwandelt.
do {
Position = Zwischen2.indexOf("%");
Zeichen = Zwischen2.slice(Position, Position + 3);
Zwischen3 = Zwischen2.replace(Zeichen, unescape(Zeichen));
Zwischen2 = Zwischen3;
Marker = Zwischen2.search("%");
} while(Marker != -1);
// Hier wird überprüft ob es sich bei der zu öffnenden Datei um eine Exceltabelle handelt.
// Exceltabellen sollen nämlich erst auf die Festplatte kopiert werden. Dazu müssen sie über ein Script gestartet werden.
Last3 = Zwischen2.substr(Zwischen2.length - 3, 3);
// Wenn es sich um eine Excel-Datei handelt, wird der Link um das Script erweitert.
if(Last3 == 'xls') {
Link = '../wissa/tools/excel-start.htm?' + Zwischen2;
}
else {
Link = '%22' + Zwischen2 + '%22';
}
// Jetzt wird HTML-Code erzeugt. Dies muss über "writeln" geschehen, da sonst keine Scriptvarablen benutzt werden können.
document.writeln(' <table border="0">');
document.writeln(' <tr class="RecordTitle">');
document.writeln(' <td align="right" valign="top" class="RecordTitle" style="background-color:white;">1');
document.writeln(' <p>. </td>');
document.writeln(' <td><b class="RecordTitle">');
document.writeln(' <a href="javascript:PAWAufruf2 (%27 ' + Link + ' %27)%3B" class="RecordTitle">Remedy Installation.doc</a>');
document.writeln(' </b></td>');
document.writeln(' </tr>');
document.writeln(' <tr>');
document.writeln(' <td></td>');
document.writeln(' <td><b><i>Abstract: </i></b>' + Beschreibung + ' </td>');
document.writeln(' </tr>');
document.writeln(' <tr>');
document.writeln(' <td></td>');
document.writeln(' <td><i class="RecordStats"><a href="javascript:PAWAufruf2 (%27 ' + Link + ' %27)%3B" class="RecordStats" style="color:blue;">' + Zwischen2 + '</a> <br>');
document.writeln(' size 63.488 bytes - 21.6.2001 12:44:21 GMT </i></td>');
document.writeln(' </tr>');
document.writeln(' </table>');
document.writeln(' <p><br>');
</script>
Hallo,
ich nehme an, dass es sich hier um eine Intranetanwendung handelt...
ansonsten ist das ja arg...
wenn es sich um eine intranetanwendung handelt, die hier stark MS-spezifischen Code benutzt, setzt ihr sicher als server den IIS ein...
wenn ihr einen IIS einsetzt sind diese Sachen sicher viel besser serverseitig lösbar... per server sind die ganzen word/excel-funktionalitäten auch ausfürbar und die ausgabe bereitet sicher weniger Probleme, als dieses gefährliche js...
bitte um Aufklärung
da der backslash in js benutz wird um steuersymbole zu maskieren z.B. wenn du innerhalb eines document.write ein script ausgibst -->
</script>, probier mal die \ in doppelte \ zu übersetzen, aber genau weiß ich es nicht... wie gesagt: wenn man eine serverseitige scriptsprache einsetzen kann, dann ist dies immer zu bevorzugen...
Odium
Ja, es handelt sich um eine Intranet Anwendung auf einem IIS.
Ich nutze den Indexserver für eine Suche über verschiedene Servicedokumente (Installationsanleitungen usw.). Beim Indexserver lasse ich als Beschreibungstext die ersten 300 Zeichen anzeigen.
Mit dem Zafasript passe ich die Pfade zu den Dokumenten an, das nicht der UNC-Name sondern ein Laufwerksbuchstabe eingesetzt wird.
Das Problem taucht auf, wenn in der Beschreibung ein Pfad, z.B. "D:\Program Files\ka\was" auftaucht.
Es ist leider auch nicht möglich auf ASP oder ähnliches umzusteigen, da dieses erst auf dem Server installiert werden müsste. Die Suche soll mit den "normalen" Mitteln realisiert werden.
Hallo,
wenn ihr einen iis einsetzt ist asp schon fertig integriert...
auch wenn ich mich wiederhole, aber dies sollte alles serverseitig lösbar sein...
durch den server wird nun je nach situation html generiert...
ich wette die umsetzung ist weniger kompliziert und umfangreich wie diese gefährlich js lösung...
gut, man kennt normalerweise die bedingungen im intranet und setzt vertrauensvoll techniken wie js ein, aber dies kann ins auge gehen, gerade dann, wenn js eingesetzt wird, was NUR vom IE ausgeführt werden kann...mit serverseitigen technologien erstellst du eine html-ausgabe, die von jedem browser gelesen werden kann...
js sollte man nur für gimmicks oder rollover-effekte einsetzen, aber nicht lebensnotwendige seitenfunktionen darin integrieren...
dort könnte man auch problemlos die pfade umsetzen lassen und ausgeben...das ergebnis könnte ein normaler html-link sein, der ohne probleme anklickbar ist...
was bezeichnest du als "normal"? der normale weg ist die fertige seite so weit wie möglich vom server generieren zu lassen, und dies nicht dem browser aufhalsen, der unter umständen sch**** baut...
sieh dich mal um im bereich der ernstzunehmenden anwendungen, welche benötigt dringend js um zu funktionieren...
was ist wenn sich an deinen bedingungen etwas ändert? du musst dein gesmates js überprüfen, die serverprogr. anzupassen ist wesentlich einfacher umd komfortabler
wie in meinem oberen posting schon erwähnt werden mit dem \ zeichen innerhalb eines strings maskiert...
z.B. alert("Wollen Sie das "wirklich" tun?");
um den string nicht vor wirklich abzuschliessen, das selbst nur in anführungszeichen stehen soll wird es mit dem \ maskiert...ansonsten essig...
http://selfhtml.teamone.de/javascript/objekte/document.htm#write
Odium