Doc: document.write nach location.href

Hallo Leute,
ich bekomme normal alles mit JS zum laufen, bin zwar wahrlich kein Experte aber auch kein völliger Anfänger. Allerdings fehlt mir manchmal - wie in diesem Fall das tiefere Verständnis. Von daher:
Ich habe eine Seite mit mehreren Frames (ließ sich leider aufgrund der EDV-Infrastruktur hier nicht umgehen).
Ich habe eine Suche, die normal wunderbar funktioniert, sie gibt die Suchergebnisse im Hauptfenster aus.

  
 parent.frames[frameName].document.open();  
   parent.frames[frameName].document.write('<html><head><title></title>\n');  
   parent.frames[frameName].document.write('<link href=\'css_js/css_innen.css\' type=\'Text/css\' rel=\'stylesheet\'>');  
   parent.frames[frameName].document.write('<script src=\'css_js/js_klappen.js\' type=\'text/javascript\'></script>');  
  
   parent.frames[frameName].document.write('</head><body>\n');  
   if(druck!=""){  
    var ergebnis='<div id=\'header\'>SUCHERGEBNIS: '+treffer+' Treffer zum Suchbegriff <u>'+string+'</u>:</div><div id=\'content\'>'+druck+'</div>';  
    parent.frames[frameName].document.write(ergebnis);  
   }  
   else{  
    parent.frames[frameName].document.write('<div id=\'header\'>SUCHERGEBNIS: '+treffer+' Treffer zum Suchbegriff <u>'+string+'</u></div>');  
   };  
   parent.frames[frameName].document.write('</body></html>\n');  
   parent.frames[frameName].document.close();  
  

Wenn aber im Hauptfenster ein PDF oder eine Word-Datei geöffnet ist, geht gar nix. Ich bin auf die Idee gekommen, zunächst einen location.href auf eine leere html-seite zu machen, um quasi diese dann mit den suchergebnissen zu beschreiben. JS öffnet zwar im Frame die leere Seite, schreibt aber nicht rein. Was mache ich denn falsch? Hab mich schon totgegoogelt...
Hilfe wäre suuuuper! Dankeschön im Voraus!!!
Doc

  1. Ich habe eine Seite mit mehreren Frames (ließ sich leider aufgrund der EDV-Infrastruktur hier nicht umgehen).

    Was hat die EDV Infrastruktur mit Frames zu tun?
    Es gibt sicher Gründe, die für Frames sprechen, der ist aber nicht sonderlich plausibel.

    Wenn aber im Hauptfenster ein PDF oder eine Word-Datei geöffnet ist, geht gar nix.

    Was heißt das? Es werden keine Fehler anzeigt? Du weißt wo JS Fehlermeldungen zu finden sind? Was hast du versucht um "geht gar nix" zu verhindern? Hast du irgendwas analysiert?

    Struppi.

    1. Glaub mir - die Infrastruktur hat einiges mit Frames zu tun. Wir haben hier den IE 5 (!!!) gehabt, als ich das Projekt angefangen habe. Seit 2 (!!!) Wochen haben wir endlich den IE 8, aber jetzt mag ich auch nimmer alles umbauen.
      Analysiert habe ich gar nichts, in den Debug-Modus vom IE kommt man hier nur, wenn das gelbe Ausrufezeichen in der Statusleiste ist und das ist es in meinem Fall nicht. Ansonsten kann ich nicht mal den Quelltext ansehen, editieren kann ich nur mit dem Notepad. Soviel zur Infrastruktur ;-)

      doc

      1. Glaub mir - die Infrastruktur hat einiges mit Frames zu tun. Wir haben hier den IE 5 (!!!) gehabt,

        Selbst dem ist es egal ob du Frames benutzt oder nicht, im gegenteil je älter die Browser umso fehleranfälliger werden sie, also vom techn. Aspekt her kein Grund.

        Analysiert habe ich gar nichts, ..

        Das erklärt deine Beschreibung das da "gar nix geht" - Hilft uns aber nicht weiter. Um dir helfen zu können, müssen wir Wissen was du erwartest, was du genau machst und wo du denkst wo es hakt. Mit "gar nix gehen", ist es nicht getan.

        Struppi.

        1. Selbst dem ist es egal ob du Frames benutzt oder nicht, im gegenteil je älter die Browser umso fehleranfälliger werden sie, also vom techn. Aspekt her kein Grund.

          na ok - ich geb mich geschlagen. ;-)

          Analysiert habe ich gar nichts, ..

          Das erklärt deine Beschreibung das da "gar nix geht" - Hilft uns aber nicht weiter. Um dir helfen zu können, müssen wir Wissen was du erwartest, was du genau machst und wo du denkst wo es hakt. Mit "gar nix gehen", ist es nicht getan.

          ok, ich versuchs mal schrittweise.
          3 frames:
          1ner oben, da ist die suchmaske drin
          1ner links, hauptnavi
          1ner rechts, hauptfenster

          wenn man was in die suchmaske eingibt, schreibt er die ergebnisse brav ins hauptfenster.
          hier der Inhalt der seite mit der suchmaske:

            
          <html>  
            
          <head>  
          <link rel="stylesheet" type="text/css" href="css_js/css_navigation_oben.css" />  
          <script language="JavaScript" src="../content/db.js" type="text/javascript"></script>  
          <script LANGUAGE='JavaScript'>  
          <!--  
          var frameName="inhalt"; // Name des Frames f&uuml;r Suchergebnisse  
            
          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&uuml;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="";  
            
               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><span '+textStyle+'>In Kategorie: '+daten[i].kategorie+'</span><br><br>\n';  
                     druck=druck + daten[i].inhalt +'\n';  
                     treffer++;  
                  };  
             }  
            
            //parent.frames[frameName].location.href='blank.html';  
            parent.frames[frameName].document.open();  
             parent.frames[frameName].document.write('<html><head><title></title>\n');  
             parent.frames[frameName].document.write('<link href=\'css_js/css_innen.css\' type=\'Text/css\' rel=\'stylesheet\'>');  
             parent.frames[frameName].document.write('<script src=\'css_js/js_klappen.js\' type=\'text/javascript\'></script>');  
            
             parent.frames[frameName].document.write('</head><body>\n');  
             if(druck!=""){  
              var ergebnis='<div id=\'header\'>SUCHERGEBNIS: '+treffer+' Treffer zum Suchbegriff <u>'+string+'</u>:</div><div id=\'content\'>'+druck+'</div>';  
              parent.frames[frameName].document.write(ergebnis);  
             }  
             else{  
              parent.frames[frameName].document.write('<div id=\'header\'>SUCHERGEBNIS: '+treffer+' Treffer zum Suchbegriff <u>'+string+'</u></div>');  
             };  
             parent.frames[frameName].document.write('</body></html>\n');  
             parent.frames[frameName].document.close();  
           };  
           return false;  
          };  
          //-->  
          </script>  
            
          			  
            
          </head>  
            
          <body>  
          <form name="jump" onSubmit="return search()">  
           <table border="0" width="100%" height="100%" align="center">  
          <tr valign="middle">  
              <td><a href="../content/neuigkeiten.html" target="inhalt">News</a></td>  
              <td><a href="http://xx" target="_new">xx</a></td>  
            
            
                      <td colspan="2" class="suche"><input type="text" value="Suche" name="suche" size="20" style="color:#CCCCCC;" onFocus="this.value='';this.style.color='#000000'" onblur="this.style.color='#CCCCCC';"><input type="image" src="img/lupe.gif" onClick="search();document.form.reset()" border="0"></td>  
          <td class="none" align="left" valign="middle"><a href="suche_frame.html" class="none" target="inhalt"><img src="img/zahnrad.gif" border="0" alt="Erweiterte Suche"></a></td>  
            
            
            
              </tr>  
             </table>  
          </form>  
            
          </body></html>  
            
            
          
          

          Das funktioniert super, solange im hauptfenster (frameName="inhalt";) eine html datei offen ist. Sobald da eine pdf oder doc datei geöffnet ist, funktioniert es nicht mehr - es passiert gar nichts, das word / pdf bleibt geöffnet. Dann habe ich mir gedacht, ich mach einfach nen location.href vorher, da er dann die aufgerufene "blank.html" beschreibt und nicht versucht das pdf/word zu beschreiben. Doch das einzige, das passiert, ist dass er die blank.html im hauptfenster anzeigt, aber leider eben dort die suchergebnisse nicht anzeigt.

          Hoffe die Beschreibung ist besser?!
          Doc

          1. Das funktioniert super, solange im hauptfenster (frameName="inhalt";) eine html datei offen ist. Sobald da eine pdf oder doc datei geöffnet ist, funktioniert es nicht mehr - es passiert gar nichts, das word / pdf bleibt geöffnet.

            und es gibt keine Fehlermeldung? Das kann ich mir irgendwie nicht vorstellen, da ich aber keine Plugins zum Dokumenten anzeigen verwende, kann ich das nicht prüfen.

            Dann habe ich mir gedacht, ich mach einfach nen location.href vorher, da er dann die aufgerufene "blank.html" beschreibt und nicht versucht das pdf/word zu beschreiben. Doch das einzige, das passiert, ist dass er die blank.html im hauptfenster anzeigt, aber leider eben dort die suchergebnisse nicht anzeigt.

            Das kann damit zusammenhängen, dass das Dokument ja erst geladen werden muss, bevor du es beschreiben kannst. Daher musst du entweder versuchen den onload Event irgendwie abzufangen (am einfachsten im Frame, am sichersten in blank.html) und dann erst das Dokument zu beschreiben.

            Hoffe die Beschreibung ist besser?!

            Viel besser.

            Struppi.

            1. Das kann damit zusammenhängen, dass das Dokument ja erst geladen werden muss, bevor du es beschreiben kannst. Daher musst du entweder versuchen den onload Event irgendwie abzufangen (am einfachsten im Frame, am sichersten in blank.html) und dann erst das Dokument zu beschreiben.

              Das mit dem Laden hab ich mir gedacht. Habs auch mal mit nem timeout probiert. Deine Lösung klingt wesentlich besser, aber wie? Ich bin eher der cut&paste & dann anpassen javascripter und ohne "test"-quelltext bin ich da ziemlich aufgeschmissen. v.a. kann ich überhaupt beim onload auf den bereits angestoßenen js aus der anderen seite "warten".

              VG
              doc

              1. Hab die Lösung:
                Ist zwar auch nur ein Workaround, aber funzt (für alle die mal ein ähnliches Problem haben). Einfach im Suchfeld das onclick-Ereignis mit dem location.href versehen - sobald jemand was suchen will, wird die leere Seite aufgerufen ;-)

                  
                            <td colspan="2" class="suche"><input type="text" value="Suche" name="suche" size="20" style="color:#CCCCCC;" onFocus="this.value='';this.style.color='#000000';" onClick="parent.frames['inhalt'].location.href='blank.html';" onblur="this.style.color='#CCCCCC';"><input type="image" src="img/lupe.gif" onClick="search();document.form.reset()" border="0"></td>  
                
                

                Zwar nicht perfekt, aber funktional ;-)
                Viele Grüße
                doc

                1. Hallo,

                  Einfach im Suchfeld das onclick-Ereignis mit dem location.href versehen - sobald jemand was suchen will, wird die leere Seite aufgerufen ;-)

                  da würde ich das doch eher mit in den onfocus-Handler nehmen - was sollte ich für eine Veranlassung haben, ein Textfeld zu _klicken_?

                  Ciao,
                   Martin

                  --
                  I do take my work seriously and the way to do that is not to take yourself too seriously.
                    (Alan Rickman, britischer Schauspieler)
                  Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(