Modifizierung interner Suchfunktion
Regy
- javascript
Hallo Leute,
hab ein Super Script für eine Suchfunktion auf der eigenen Homepage gefunden. Wenn man ein Suchwort eingibt,
bekommt man in einem anderen Frame das Ergebnis als Link zur passenden Seite geliefert.
Weiß jemand,
wieweit man das Script verändern kann, um die Seite für das passende Suchwort selbst in den Frame
hineinladen zu lassen und nicht nur als Link?
Hier ist das script soweit, meine Kenntnisse reichen leider nicht aus.
Vielen Dank für jeden guten Tipp.
Gruß
Regy
Inhalt der js-Datei:
Code:
function datensatz(pfad,suche,beschr,link,target)
{
this.pfad = pfad;
this.suche= suche;
this.beschr = beschr;
this.link = link;
this.target= target;
}; var daten=new Array();
/// Hier Datensätze anlegen ////
daten[daten.length]=new datensatz("Yahoo.de","Yahoo suchmaschine verzeichnis groß katalog","Yahoo war eine der ersten Suchmaschinen","http://www.yahoo.de","_new");
Zusatz Inhalt aus Html-Datei:
Code:
function search (){
var string=document.jump.suche.value;
//erst doppelte Leerzeichen entfernen
for (var i=0;i<=string.length;i++) {
if (string.substring(i,i+2)==" "){
string=string.substring(0,i)+string.substring(i+1,string.length);
};
};
if (string.substring(0,1)==" "){ // dann führende Leerzeichen entfernen
string=string.substring(1,string.length);
};
if (string.substring(string.length-1,string.length)==" "){ // u. Leerzeichen am Ende
string=string.substring(0,string.length-1);
};
//--------------------------
var druck="";
var treffer=0;
if(string==""){
alert("Bitte Suchbegriff eingeben");
}
else{
var i="";
if(document.jump.vgle[0].checked==1){
var qq=eval('/'+string+'/i');
for(i=0;i<daten.length;i++){
if(daten[i].suche.search(qq) != -1){
druck=druck+'<a href="'+daten[i].link+'" '+linkStyle+' target="'+daten[i].target+'">'+daten[i].pfad+'</a><br><span '+textStyle+'>'+daten[i].beschr+'</span><br><br>\n';
treffer++;
};
};
}
else if(document.jump.vgle[1].checked==1){
var einzeln=new Array();
einzeln=string.split(" ");
var a="";
var i="";
var qq="";
var zaehler="";
for(i=0;i<daten.length;i++){
zaehler=0;
for (a=0;a<einzeln.length;a++){
qq=eval('/'+einzeln[a]+'/i');
if(daten[i].suche.search(qq) != -1){
zaehler++;
}
else{
break;
};
if(zaehler==einzeln.length){
druck=druck+'<a href="'+daten[i].link+'" '+linkStyle+' target="'+daten[i].target+'">'+daten[i].pfad+'</a><br><span '+textStyle+'>'+daten[i].beschr+'</span><br><br>\n';
treffer++;
};
};
};
}
else if(document.jump.vgle[2].checked==1){
var einzeln=new Array();
einzeln=string.split(" ");
var a="";
var i="";
var qq="";
for(i=0;i<daten.length;i++){
for (a=0;a<einzeln.length;a++){
qq=eval('/'+einzeln[a]+'/i');
if(daten[i].suche.search(qq) != -1){
druck=druck+'<a href="'+daten[i].link+'" '+linkStyle+' target="'+daten[i].target+'">'+daten[i].pfad+'</a><br><span '+textStyle+'>'+daten[i].beschr+'</span><br><br>\n';
treffer++;
break;
};
};
};
};
if(document.jump.vgle[1].checked==1){
string=string.replace(/\s/g,"</u> UND <u>");
};
if(document.jump.vgle[2].checked==1){
string=string.replace(/\s/g,"</u> ODER <u>");
};
parent.frames[frameName].document.open();
parent.frames[frameName].document.write('<html><head><title></title>\n');
parent.frames[frameName].document.write('</head><body>\n');
if(druck!=""){
var ergebnis='<b>'+treffer+'</b> Treffer zum Suchbegriff <u>'+string+'</u>:<br><br>\n'+druck;
parent.frames[frameName].document.write('<span '+textStyle+'>'+ergebnis+'</span>');
}
else{
parent.frames[frameName].document.write('<span '+textStyle+'><b>'+treffer+'</b> Treffer zum Suchbegriff <u>'+string+'</u></span>');
};
parent.frames[frameName].document.write('</body></html>\n');
parent.frames[frameName].document.close();
};
return false;
};
//-->
</script>
Habe nur alles gepostet, weil ich denke, daß es nicht nur am ersten Teil gefixt werden kann, aber von wirklichem wissen kann ich da leider nicht sprechen - ehr so ein bauchgefühl. vielleicht gibt es ja jemanden der helfen kann.
Hi,
warum schickst Du nicht Deinen ganzen Server als ZIP-File hier drauf?
Was meinst Du, wer Lust hat, sich das alles anzusehen?
Mein Tip wäre sonst:
http://www.w3sitesearch.de
Damit kannste genau steuern, was wie und wo erscheinen soll.
Gruß
Reiner
sorry wegen der Masse, aber in einem anderen Forum hatte ich nur das Probem beschrieben und das war denen nicht genug, menno wie mans macht gelle.
Danke für den Tipp, aber ich möchte mich da nicht anmelden als Kunde und daher suche ich immernoch Hilfe zu dem Script oder ein anderes vielleicht nicht so kompliziertes Script.
Ich möchte ja nur bei mir intern auf der Suche bestimmte Seiten nach Schlagwörtern finden.
Gruß
Regy
Hi,
warum schickst Du nicht Deinen ganzen Server als ZIP-File hier drauf?
Was meinst Du, wer Lust hat, sich das alles anzusehen?Mein Tip wäre sonst:
http://www.w3sitesearch.deDamit kannste genau steuern, was wie und wo erscheinen soll.
Gruß
Reiner
Danke für den Tipp, aber ich möchte mich da nicht anmelden als Kunde und daher suche ich immernoch Hilfe zu dem Script oder ein anderes vielleicht nicht so kompliziertes Script.
kostet ja nichts!
Ich möchte ja nur bei mir intern auf der Suche bestimmte Seiten nach Schlagwörtern finden.
genau das macht mein Vorschlag!
ok, aber ich möchte eben die Suchergebnisse nicht als Linksammlung angezeigt bekommen sondern direkt in die Seite geladen bekommen, die durch das Suchwort angesprochen wird.
Ist das irgendwie besser verständlich? Ich weiß ja selbst nicht, wie man das besser ausdrücken könnte, wenn das nicht rüberkommt, dann versuchs ichs gern nochmal.
Gruß
Regy
Danke für den Tipp, aber ich möchte mich da nicht anmelden als Kunde und daher suche ich immernoch Hilfe zu dem Script oder ein anderes vielleicht nicht so kompliziertes Script.
kostet ja nichts!
Ich möchte ja nur bei mir intern auf der Suche bestimmte Seiten nach Schlagwörtern finden.
genau das macht mein Vorschlag!
hi,
ok, aber ich möchte eben die Suchergebnisse nicht als Linksammlung angezeigt bekommen sondern direkt in die Seite geladen bekommen, die durch das Suchwort angesprochen wird.
und wenn meine suchanfrage auf x deiner seiten zutrifft?
gruß,
wahsaga
hi,
ok, aber ich möchte eben die Suchergebnisse nicht als Linksammlung angezeigt bekommen sondern direkt in die Seite geladen bekommen, die durch das Suchwort angesprochen wird.
und wenn meine suchanfrage auf x deiner seiten zutrifft?
Ich glaube, er/sie (?) meint das anders:
Das Ergebnis soll in die eigene Seite gerändert werden, also keine aufpoppende Ergebnisseite, oder?
Regy: Entweder Du benutzt Frames oder (geht aber nicht in der kostenlosen Version) übergibst ein Template.
Gruß
Reiner
Stimmt, ich (sie) möchte keine aufpoppende Ergebnisseite! Nur wie sag ich dem Script es soll mir nicht den Link in den bestimmten Frame geben sondern den Inhalt der Seite xy?
Jaaa, wir kommen der Sache schon näher =)
Was ist ein Template übergeben?
Gruß
Regy
hi,
ok, aber ich möchte eben die Suchergebnisse nicht als Linksammlung angezeigt bekommen sondern direkt in die Seite geladen bekommen, die durch das Suchwort angesprochen wird.
und wenn meine suchanfrage auf x deiner seiten zutrifft?
Ich glaube, er/sie (?) meint das anders:
Das Ergebnis soll in die eigene Seite gerändert werden, also keine aufpoppende Ergebnisseite, oder?Regy: Entweder Du benutzt Frames oder (geht aber nicht in der kostenlosen Version) übergibst ein Template.
Gruß
Reiner
Was ist ein Template übergeben?
Wäre auch super, wenn das von dem kostenlosen Teil ausgeführt wird und nicht nur die professionell Version.
Vielen Dank Reiner, ich werd mich dann wohl doch dort erstmal anmelden müssen. Gibts da eigentlich auch irgendwie versteckte Sachen, die mich ausspionieren könnten, nee oder?
Gruß
Regy
Was ist ein Template übergeben?
Wäre auch super, wenn das von dem kostenlosen Teil ausgeführt wird und nicht nur die professionell Version.
Versuch mal, ob es in der kostenlosen Version geht!
Ich weiß es nicht, kann sein, daß wir vergessen haben das abzufangen... bin mir nicht wirlich sicher. ;-)
Wobei, wenn es geht, kein Anspruch besteht, wenn es wieder irgendwann abgeschaltet wird...
Vielen Dank Reiner, ich werd mich dann wohl doch dort erstmal anmelden müssen. Gibts da eigentlich auch irgendwie versteckte Sachen, die mich ausspionieren könnten, nee oder?
Ja, man sieht, ob Deine Seiten so gut sind, daß ein Crawler sich da durchfinden kann! ;-)
Ansonsten liest das Teil nur das, was jeder Browser auch lesen kann.
Das ist keine Magie!
Gruß
Reiner
Hi,
hab ein Super Script für eine Suchfunktion auf der eigenen Homepage gefunden.
Ja, wer hat's denn da versteckt, das Du's erst jetzt gefunden hast?
(Ja, ich weiß, das tut man nicht, aber mitunter kann auch ich nicht wiederstehen ;-)
Wenn man ein Suchwort eingibt,
bekommt man in einem anderen Frame das Ergebnis als Link zur passenden Seite geliefert.
Weiß jemand,
wieweit man das Script verändern kann, um die Seite für das passende Suchwort selbst in den Frame
hineinladen zu lassen und nicht nur als Link?
Code:
function datensatz(pfad,suche,beschr,link,target)
{
this.pfad = pfad;
this.suche= suche;
this.beschr = beschr;
this.link = link;
this.target= target;
}; var daten=new Array();
/// Hier Datensätze anlegen ////
daten[daten.length]=new datensatz("Yahoo.de","Yahoo suchmaschine verzeichnis groß katalog","Yahoo war eine der ersten Suchmaschinen","http://www.yahoo.de","_new");
Aus dem Datensatz ersiehst Du, das die URI als vorletztes kommt und durch einfaches durchzählen (Array beginnt bei 0!) hast Du daten[i][4] als URI. Die kannst Du einem (I)Frame anbieten, das lädt dann die Seite auf die der Link verweist. Zum Beispiel so:
window.frame[j].location.href = daten[i][4];
Habe nur alles gepostet, weil ich denke, daß es nicht nur am ersten Teil gefixt werden kann, aber von wirklichem wissen kann ich da leider nicht sprechen - ehr so ein bauchgefühl. vielleicht gibt es ja jemanden der helfen kann.
Da Du ja eh nur kostenloses haben möchtest und ich so dem Reiner auch nicht in's Handwerk pfusche, möchte ich einmal den Besuch von http://selfhtml.christoph-schnauss.de/artikel/javascript/ empfehlen. Da wird zwar eine reine Suche in Javascript beschrieben aber auch mit dem Versuch etwas Hintergrundwissen zu vermitteln. Es ist noch ein Entwurf, daher als Gegenleistung eine Bitte um Kritik. Bitte keine Details, die kommen später, nur das Gröbste.
so short
Christoph Zurnieden
Hi Christoph,
Da Du ja eh nur kostenloses haben möchtest und ich so dem Reiner auch nicht in's Handwerk pfusche [...]
Ich sehe da keine gegenseitige Konkurrenz!
Deine Scripte haben den Vorteil, daß sie auch offline funktionieren.
Unser Service hat vielleicht den ein oder anderen Vorteil..., oder?
Gruß
Reiner
Habe jetzt nochmal W3 durchgecheckt und leider ist die Funktion Template nur bei der Version dabei, die kostet uzw. monatl.
Tja und da ich null Kohle hab, werde ich mir das von Christoph mal näher zu Gemüte führen, auch wenn ich wahrscheinlich zig STundne büffeln muß, bevor ich das kapiere und ich meinem Ziel dadurch nicht wirklich näher komme. Aber danke für die Mühe Jungs.
Gruß
Regy
Habe jetzt nochmal W3 durchgecheckt und leider ist die Funktion Template nur bei der Version dabei, die kostet uzw. monatl.
Du hast meinen ";-)" nicht gesehen bzw. verstanden, oder?
Teste mal, ob es geht!!!
Ich habe jedenfalls gehört, es _könnte_ auch in der Free-Version klappen.
Gruß
Reiner
Hi,
jetzt habe ich doch extra noch mal nachgeschaut und ja ...
Da Du ja eh nur kostenloses haben möchtest und ich so dem Reiner auch nicht in's Handwerk pfusche [...]
Ich sehe da keine gegenseitige Konkurrenz!
Deine Scripte haben den Vorteil, daß sie auch offline funktionieren.
Unser Service hat vielleicht den ein oder anderen Vorteil..., oder?
(fishing for compliments, hu? ;-)
.. es ist eindeutig klar, das Du selber den Service anbietest. Wieso also sieht es verteufelt danach aus als ob der OP meint es wäre von jemand anderem?
so short
Christoph Zurnieden
Aus dem Datensatz ersiehst Du, das die URI als vorletztes kommt und durch einfaches durchzählen (Array beginnt bei 0!) hast Du daten[i][4] als URI. Die kannst Du einem (I)Frame anbieten, das lädt dann die Seite auf die der Link verweist. Zum Beispiel so:
window.frame[j].location.href = daten[i][4];
>
an welche stelle genau gehört das hin, da wo sonst daten[daten.length]=new datensatz("tore.html","tore","","tore.html","\_new"); steht ????
ja ja ich weiß, aber ich mit diesen programmiergeschichten tue ich mich halt schwer.
sorry...
REgy
Hi,
window.frame[j].location.href = daten[i][4];
> >
>
> an welche stelle genau gehört das hin, da wo sonst daten[daten.length]=new datensatz("tore.html","tore","","tore.html","\_new"); steht ????
Nein, da kommt rein, wonach Du suchen läßt. Das hast Du aber scheint's auch schon verstanden.
In den Zeilen von
~~~javascript
parent.frames[frameName].document.open();
bis hin zu und einschließlich
parent.frames[frameName].document.close();
werden in den Frame mit dem in der Variablen frameName gespeichertem Namen die Links geschrieben. Wenn Du nun möchtest, das statt der Links die Seite in eben jenem Frame auftauchen mußt Du dem Frame angeben, wo er diese Seite findet. Das geht mit verschiedenen Methoden, eine davon ist die Methode auf location.href des Frames zuzugreifen. Man könnte auch das "src"-Attribut verändern, wäre im Endeffekt aber das Gleiche.
Du mußt also das Schreiben des Frameinhaltes gegen das Anzeigen einer Seite im Frame austauschen. Das Schreiebn geschieht, wie schon oben angedeutet zwischen und einschließlich
parent.frames[frameName].document.open();
bis hin zu und einschließlich
parent.frames[frameName].document.close();
Der erste unüberlegte Einfall
parent.frame[frameName].location.href = daten[i].link;
funktioniert nicht so richtig. Warum nicht?
Es kann mehrere Treffer geben, deshalb werden die in einer Schleife abgearbeitet und es geht leider nicht so einfach, wie gedacht. Du mußt die Ergebnissarrays durchgehen und für jeden dort enthaltenen Link ein (I)Frame erzeugen und mit der entsprechenden Seite füllen. Das ist recht viel an Schreibarbeit und kann sehr schnell sehr unübersichtlich werden. Zudem sind die Ergebnissarrays, die das Skript liefert schon etwas vorbearbeitet, das müßte man dann ebenfalls ändern da man das sonst an anderer Stelle mehr Mühe hätte.
Entweder schreibst Du Dir da selber etwas womit noch ordentlich angeben könntest -- und das sogar mit Recht! -- oder Du nimmst das Angebot vom Reiner an.
Es kann natürlich sein, das wirklich immer nur exakt ein Link aus der Suche rauskommt, dann kanst Du das wirklich so einfach machen.
ja ja ich weiß, aber ich mit diesen programmiergeschichten tue ich mich halt schwer.
Naja, wer Javascript anpassen möchte sollte schon ein klein wenig davon beherrschen. Es ist aber nicht sonderlich schwer und zeigt auch schnell Erfolge.
so short
Christoph Zurnieden