firefighter1995: Bei onclick Seite erst neu laden dann neues Fenster öffnen

Hallo zusammen,

ich hoffe ihr könnt mir helfen. Zuerst zur Ausgangslage:
Ich baue ein lokal abrufbares Informationsverzeichnis auf. Für eine Ansicht habe ich dafür eine html erstellt:

		<frameset cols="12%,76%,12%" frameborder="0" border="0">  
			<frame name="linav" src=".\000_nav.html" scrolling="no" noresize>  
			<frameset rows="12%,76%,12%" frameborder="0" border="0">  
				<frame name="header" src=".\geb_header.html" scrolling="no" noresize>  
				<frame name="main" src="..\..\pdf\177\177_GIB_1.pdf">  
				<frame name="footer" src=".\000_footer.html">  
				<noframes>  
					<body>  
						Ihr Browser unterstützt keine Frames. Aus diesem Grund kann diese Website nicht richtig dargestellt werden.<br>  
						<a href="..\index.html">Hier kommen Sie zurück zur Startseite</a>  
					</body>  
				</noframes>  
			</frameset>  
			<frame name="renav" src=".\000_renav.html" scrolling="no" noresize>  
         </frameset>  

Im "main"-frame werden immer pdfs dargestellt die aus anderen Frames dort per target aufgerufen werden.
Ich habe nun im "footer"-frame einen "Button (Anker)" eingebaut, der mir die URL des pdfs aus dem "main"-frame ausliest und dieses in einem neuen Fenster öffnet, damit das pdf auf einer extra Seite ohne Navigationsleisten dargestellt wird:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  
<html>  
	<head>  
		<title>Navigation Geb. 000</title>  
		<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">  
		<base target="main">  
		<link rel=Stylesheet type="text/css" media=all title="Main" href="..\..\CSS\style.css">  
		<link rel=Stylesheet type="text/css" media=all title="Main" href="..\..\CSS\button.css">  
	</head>  
  
	<body text="#ffffff">  
	<script src="framelink.js" type="application/javascript">  
		</script>  
		<table align="center" border="0" cellspacing="0">  
			<tr width="110">  
				<td colspan="2"><a onclick="window.location.reload(); window.open(mainpdf)" class="bluebutton_m">Vollbild</a></td>  
			</tr>  
		</table>  
	</body>  
</html>

In der datei "framelink.js" habe ich im Moment nur folgendes stehen:

var mainpdf = window.parent["main"].location.href;  

Das Ganze funktioniert soweit auch ganz gut NUR...
NUN zu meinem Problem:

Wenn ein neues pdf im "main"-frame aufgerufen wird, muss man immer erst "F5" drücken, damit die Seite aktualisiert, da ansonsten immer das pdf im neuen Fenster geladen wird, dass beim ersten Seitenaufruf geöffnet worden ist.

Wie ihr sehen könnt habe ich schon versucht per "window.location.reload()" das vorher noch automatisch zu machen, aber es funktioniert nicht.
Ich bräuchte praktisch das Javascript so, dass er immer erst nochmal nachschaut, welche URL gerade im "main"-frame geöffnet ist und dann dieses in einem neuen Fenster öffnet.

Ich möchte noch kurz erwähnen, dass ich mit js noch gar keine Erfahrungen habe und ich mich zwar versuche hier über selfhtml einzuarbeiten, es mir aber doch nicht ganz leicht fällt. ;-)

Vielleicht hat jemand von den Profis eine Lösung für mich? Da ich mit google und alles möglichen Suchen seit Stunden mich irgendwie im Kreis drehe und nicht weiter komme.

Dank euch schon mal im voraus!

  1. Hi,

    Im "main"-frame werden immer pdfs dargestellt die aus anderen Frames dort per target aufgerufen werden.
    Ich habe nun im "footer"-frame einen "Button (Anker)" eingebaut, der mir die URL des pdfs aus dem "main"-frame ausliest und dieses in einem neuen Fenster öffnet,

    Beides ist sehr optimistisch von Dir. Bei mir z.B. werden PDFs immer im PDF-Reader dargestellt. Nie im Browser.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Hallo Andreas,

      Beides ist sehr optimistisch von Dir. Bei mir z.B. werden PDFs immer im PDF-Reader dargestellt. Nie im Browser.

      Ist es eigentlich nicht. Ich arbeite mit einem gesetzten System (ist ja reiner offline Betrieb). Es geht hier um Plandarstellungen und verschiedene Anweisungen, wenn sich jedesmal der pdf-reader ausßerhalb öffnen würde, wäre das ganze vollkommen unbrauchbar. Und leider sind die pdfs so von "oberster Stelle" gesetzt und nicht mein Wunsch ;-(.
      Aber vielleicht hast du oder wer anders ja trotzdem eine Lösung für meine Problematik?

      SG.

  2. Hallo,

    Vielleicht hat jemand von den Profis eine Lösung für mich? Da ich mit google und alles möglichen Suchen seit Stunden mich irgendwie im Kreis drehe und nicht weiter komme.

    Deine Profis werden sich nur ungern an die Zeiten erinnern als framesets noch eine Lösung unter anderen waren. Das ist zuviel HTML aus längst vergangenen Tagen ;-(.

    Also wenn ich das analysiere dann ist da etwas verquer

    onclick="window.location.reload(); window.open(mainpdf)"  
    var mainpdf = window.parent["main"].location.href;
    

    Hier wird keine pdf-Datei geladen, sieht aus wie Code ist aber letzlich nur ein reload von nichts.

    onclick="main.location.href='irgendeine.pdf'" oder gleich href="irgendeine.pdf" target="main" da würde sich etwas tun.

    ODER deinen Ansatz überdenken und sich mit neuern technischen Möglichkeiten beschäftigen, wäre letzlich auch viel weniger abstrakt.

    1. Hallo Paulchen,

      danke erstmal für deine Hilfe, allerdings ist das Problem ja genau dass ich eben keinen festen Pfad dort einbauen kann. Ich würde gerne einen Button zur Verfügung stellen, der sich den passenden Pfad immer aus dem "main"-Frame holt und dann in einem neuen Fenster öffnet.
      Es funktioniert ja teilweise auch, nur hab ich halt das Problem, dass er immer den Pfad nimmt bei dem die ganze Seite geladen wurde. Wenn sich nur in dem "Main"-frame was ändert bekommt es dieses javascript nicht mit. Also bräuchte ich eine Abfrage die vor dem Ausführen nochmal die URL des "main"-frames ausliest.
      Ich weiß, dass mit framesets zu arbeiten eigentlich veraltet ist, allerdings würde ich das gleiche Problem mit divs genau so haben denke ich oder?
      Kann auch sein, dass ich mich da grade in was verrenne! Darum bitte ich ja um Hilfe ;-)

      SG.

      1. Hola,

        vielleicht wird so ein Schuh draus:

        function setLink () {  
            var mainpdf = top.main.location.href;  
            top.footer.document.getElementsByTagName('a')[0].href = mainpdf;  
            return true;  
        }
        

        <a href="javascript:void(0)" onclick="return setLink()" target="_blank">Vollbild</a>

        Aber wie gesagt, das mit den Framesets ist unnötig. Ein Iframe und eine html Datei sind völlig ausreichend um ein verständlicheres Ergebnis zu erhalten.

        1. Hallöle,

          leider hat der Schuh anscheinend noch Löcher ;-)
          Aber erstmal riesen Dank, dass du mir versuchst zu helfen!!!

          Wenn ich meinen bisherigen Code durch deinen Code ersetze, geht zwar eine neue Seite auf. In der Adresszeile steht dann "javascript:void(0)" und das Fenster gibt aus "Diese Seite kann nicht angezeigt werden".
          Hätte ich da noch Werte verändern oder hinzufügen müssen? Ich hab auch mal das "javascript:void(0)" mit "#" ersetzt aber hat auch nichts gebracht.
          Vielleicht kannst du dir das nochmal anschauen?
          Im übrigen. Die Seitenstruktur ist deshalb mit frames, da ich kein php zur Verfügung habe und die Seiten nur lokal laufen. Ich hab irgendwie keine Möglichkeit gefunden eine Seite mit 2 Menüleisten (rechts und unten) und einer Navigationsleiste die bei jedem Menüpunkt wechselt (links) über iframe zu realisieren. ;-( Und jede Seite komplett incl. allen Menüs zu coden wäre viel zu aufwendig. Ich denke, dass ich da am Ende bei mehreren tausend Seiten wäre. Und dies wiederum ist leider nicht praktizierbar.
          Auch deshalb bin ich sehr froh, dass mir wer hilft!

          Einen schönen Tag noch ;-)

          1. Hallo,

            habe ein Beispiel hochgeladen, zumindest so wie es verstanden habe.

            1. Hi,

              genau so solls sein ;-) Du hast das genau richtig verstanden!!!
              Ich sehe, dass du im footer genau das eingepflegt hast, dass du auch gepostet hast. Hast du denn in der framelink.js den code auch so eingetragen wie du ihn gepostet hast? Da ich das eigentlich schon so übernommen habe aber eben bei mir irgendwie nicht so funktioniert.

              Ahhh stelle grade fest, dass wenn ich das im FF aufmache funktionierts super, aber im IE funktionierts nicht, da kommt die gleiche Meldung wie bei meinem eingefügten code von dir. Braucht man da für den IE wieder was extriges?

              SG und riesen Dank ;-)

              1. in der Footer habe ich einen kleinen Fehler gemacht: hier der korrigierte Code <script src="framelink.js" type="text/javascript"></script>

                1. Entschuldige die Frage, aber muss ich das script das im body-tag steht auch kopieren und einfügen? Weil das ja in jedem Frame steht.
                  Hast du deinen kleinen Fehler bei deinem Beispiel auch schon ausgebessert?
                  Und nochmal meine Frage, ob du in der js den code so eingetragen hast wie du ihn gepostet hast? Ich will nur keine Fehler machen!
                  SG
                  Übrigens habe dir das auch mal hochgeladen was ich habe!
                  http://www.stc-tauchen.de/test01/000_index.html

                  1. Wenn du framelink.js in den <head> der Frameset Seite (000_index.html) einbaust, sieht der modifizierte Link so aus: <a id="vollbild" href="javascript:void(0)" onclick="return top.setLink()" target="_blank">Vollbild</a>.
                    Lass die Tabelle im Footer weg, auch die <link rel="Stylesheet" type="text/css" media="all" title="Main" href="index-Dateien/a.htm"> sehen eher so aus <link rel="stylesheet" type="text/css" media="all" href="index-Dateien/a.css">, also x.css und nicht x.html und der titel macht Sinn im Zusammenhang von rel="alternate stylesheet".

                    Und mach Fehler, dafür gibt es ja im Firefox Firebug und den HTML-Validator, zum Lernen sind die eine echte Hilfe. Tip: Der Anpassungen für den IE kannst du machen wenn es im aktuellen Firefox rund läuft. Also Fehler machen? Trial and Error... ich kenne es nicht anders ;-))

                    Schau dir die aktualisierte Seite an, dort sind alle Änderungen drinnen.

                    1. Hallo Paulchen,
                      ich hab mir deine Seite nun angeschaut und versucht alles was du mir geschildert hast umzusetzen.

                      auch die <link rel="Stylesheet" type="text/css" media="all" title="Main" href="index-Dateien/a.htm"> sehen eher so aus <link rel="stylesheet" type="text/css" media="all" href="index-Dateien/a.css">, also x.css und nicht x.html und der titel macht Sinn im Zusammenhang von rel="alternate stylesheet".

                      So habe ich keine css drin. Bei allen html heißt die Zeile im Head-Bereich z.B.
                      <link rel=Stylesheet type="text/css" media=all title="Main" href="../../CSS/button.css">

                      und...

                      Also Fehler machen? Trial and Error... ich kenne es nicht anders ;-))

                      Ich mach das schon seit Wochen *g*

                      Ich vermute aber immernoch, dass ich einen Fehler in der function habe. Ich poste mal was ich in der .js stehen habe. Und da steht nur das und nichts anderes:

                       function setLink () {  
                          var mainpdf = top.main.location.href;  
                          top.footer.document.getElementsByTagName('a')[0].href = mainpdf;  
                          return true;  
                      }
                      

                      Es macht sich zwar im FF eine neue Seite auf, aber sonst tut sich nix. Da ich die ganzen html geändert habe kann es doch eigentlich nur noch an der.js liegen oder?
                      Ich probier jetzt noch n bisschen rum.
                      Danke für deine Ausdauer und dein Verständnis!
                      SG und eine gute Nacht noch.

                      1. Hallo,

                        function setLink () {

                        var mainpdf = top.main.location.href;
                            top.footer.document.getElementsByTagName('a')[0].href = mainpdf;
                            return true;
                        }

                          
                        Dieser Code greift auf den ersten `<a href`{:.language-html} zu, da du aber mittlerweile mehrere `<a href`{:.language-html} in deinem Footer hast, habe ich das in meinem Beispiel verändert  
                          
                        ~~~javascript
                        function setLink () {  
                        	var mainpdf = top.main.location.href;  
                        	top.footer.document.getElementById('vollbild').href = mainpdf;  
                        	return true;  
                        }
                        

                        und entsprechend den Link angepasst <a id="vollbild" href="javascript:void(0)" onclick="return top.setLink()" target="_blank">Vollbild</a>, also ihm eine ID verpasst, über den er jetzt in der function angesprochen wird.

                        1. OH MEIN GOTT Paulchen,

                          ich danke dir erstmal ganz herzlich!!! Es funktioniert (im FF)!
                          Ich bin so froh, dass es zumindest mal im FF läuft.
                          Jetzt soll/muss es nur noch im IE klappen. Da FF mir nur an ner kleinen Minderheit von PCs zur Verfügung steht der Standart ist IE.

                          Aber ich bin schon mal richtig froh dies mit DEINER Hilfe geschafft zu haben.

                          Wenn du noch zufällig wüsstest warum im IE das nicht funktioniert und du mir hier noch durch den Dschungel helfen kannst, würde mir echt ein riesen, reisen großer Stein vom Herzen fallen!
                          DANKE !!!

                        2. Nochmal hallo Paulchen,

                          Hallo,

                          function setLink () {

                          var mainpdf = top.main.location.href;
                              top.footer.document.getElementsByTagName('a')[0].href = mainpdf;
                              return true;
                          }

                          
                          >   
                          > Dieser Code greift auf den ersten `<a href`{:.language-html} zu, da du aber mittlerweile mehrere `<a href`{:.language-html} in deinem Footer hast, habe ich das in meinem Beispiel verändert  
                          >   
                          > ~~~javascript
                          
                          function setLink () {  
                          
                          > 	var mainpdf = top.main.location.href;  
                          > 	top.footer.document.getElementById('vollbild').href = mainpdf;  
                          > 	return true;  
                          > }
                          
                          

                          und entsprechend den Link angepasst <a id="vollbild" href="javascript:void(0)" onclick="return top.setLink()" target="_blank">Vollbild</a>, also ihm eine ID verpasst, über den er jetzt in der function angesprochen wird.

                          Jetzt versteh ich auch endlich dieses script. Wenn man zu tief und zu lang in die Kiste schaut, sieht man manchmal nur noch große ???????? ;-)
                          Du hast mir auch vom Verständnis her sehr geholfen. Auch dafür DANKE!

                        3. Was mir grade auffällt.
                          Im IE ist es so, dass wenn ich den Vollbild Button drücke und im "main"-frame noch kein pdf geladen wurde es funktioniert. Die 000_main.html wird passend neu geöffnet. Sobald ich aber eine pdf angezeigt habe funktionierts nicht mehr und es passiert der Fehler den ich vor ein paar posts schon beschrieben habe.

                          Und noch eins ist mir aufgefallen. Immer wenn ich das 000_main.html über den "Vollbild-Button" angezeigt habe, öffnet er beim drücken des Buttons immer diese html in einem anderen Fenster, egal ob ich mittlerweile eine pdf geöffnet habe oder nicht. Es scheint so als würde er die URL nicht/falsch laden.Hmmm.
                          Vielleicht hilft dir diese Fehlerbeschreibung weiter (hoffe ich zumindest) ;-)

                          SG

                          1. Hallo firefighter,

                            für den IE brauchts eine Einstellung:

                            Extras > Internetoptionen:
                              Registerkarten:
                              Popups immer in neuer Registerkarte öffnen.

                            Jetzt werden keinen neuen Fenster mehr geöffnet.

                            Ich habe das Beispiel einmal so abgeändert das es zumindest auch auf meinem IE tut was es soll. Ich habe jetzt nicht mehr die Zeit das zu kommentieren, aber wenn du dir die geänderte nav.html und die footer.html anschaust verstehst die auch die Änderungen in der framelink.js. Wichtig: in der nav.html habe ich den <base target> rausgehauen.

                            Schönen Tag noch

                            ps: am Abend habe ich wieder Zeit und werde noch einmal hier reinschauen.

                            1. Hallo!

                              Ich habe alles so abgeändert wie du es hast. Funktioniert auch im FF tadellos.
                              Allerdings im IE wieder leider nicht. Auch wenn ich dein Beispiel im IE aufmache passiert folgendes:
                              Wenn man Beispiel 1,2 oder 3 beim ersten mal drauf klickt macht dieses auch so wie es sein soll im "main"-frame auf. Wenn man dann auf "Vollbild" klickt macht auch dieses perfekt auf. Ich dachte hier schon - JUHU es passt.
                              Allerdings kann man das pdf im main-frame nicht mehr wechseln. Es bleibt immer das als erstes geöffnete pdf im main-frame stehen. ;-(
                              Warum ersetzt der das pdf nicht mehr? Vor allem weils im FF ja funktioniert.
                              Ich hasse irgendwie den IE immer mehr ;-)
                              SG.

                              1. Hallo,

                                Warum ersetzt der das pdf nicht mehr? Vor allem weils im FF ja funktioniert.

                                Also mein IE8 macht das nicht, er wechselt brav und macht das was er soll.

                                Ich hasse irgendwie den IE immer mehr ;-)

                                Nun ja… ich brauche ihn nur noch zum Testen und für meinen ollen Router, der sich nur von einem IE bedienen lässt, ansonsten unter win8 an dem dem IE10 ist eigentlich nichts mehr auszusetzen. Wer noch mit winXP unterwegs ist hat bessere Alternativen zur Auswahl, besonders da der IE hier nicht mehr weiterentwickelt wird.

                                Gruß Paulchen

                                1. Hallo Paulchen,

                                  ich hab den IE9 und der macht das leider so ;-(
                                  Jetzt war/ist mein Problem dank dir ja eigentlich gelöst und doch bin ich genau so weit wie vorher weils nicht im IE9 funktioniert. ARRRGGGGHHHH

                                  Hmm vielleicht weiß ja noch wer Rat??? Ich bin da leider völlig aufgeschmissen.

                                  Einen schönen Abend noch. Und vielleicht noch einen guten Rutsch, außer es tut sich doch noch was!?!

                                  firefighter2006

                                  1. Hallo,

                                    poste doch noch einmal einen Link, dann werde ich mir das mit dem IE anschauen, denn an meiner Seite sehe ich ja kein Problemchen und ich glaube nicht das der IE9 es schräger machen kann als der IE8/IE10. Zum anderen welches pdf-Plugin verwendest du? Acrobat ist mir zu fett und zu langsam, da ich es im IE sehen wollte habe ich mir den Foxit Reader installiert, ansonsten reicht mir Sumatra PDF, rasend schnell und Open Sopurce. Traumhaft ;-) steht halt nur nicht auf den IE.

                                    1. Hallo Paulchen,

                                      Zu deiner Frage:

                                      Zum anderen welches pdf-Plugin verwendest du? Acrobat ist mir zu fett und zu langsam, da ich es im IE sehen wollte habe ich mir den Foxit Reader installiert, ansonsten reicht mir Sumatra PDF, rasend schnell und Open Sopurce. Traumhaft ;-) steht halt nur nicht auf den IE.

                                      Ich benutze den Adobe Reader. Ist mir leider so vorgegeben.
                                      Übrigens habe ich jetzt mal diesen Reader und den IE9 deinstalliert. Danach neu gestartet und wieder alles installiert. Seit dem öffnet er mir jetzt alle pdf's im Adobe-Reader (im IE9). Im FF funktionierts weiterhin sehr gut. Jetzt hab ich schon alle möglichen Häkchen probiert aber egal was ich einstelle, es interessiert den Browser leider gar nicht. Ich werde mich jetzt erst mal mit dem Browser spielen (nochmals deinstallieren usw). Habs auf nem anderen PC schon probiert mit IE8 da funktionierts. Ich teste mal ein bisschen rum und melde mich die Tage nochmal was sich bei mir tut.
                                      Ich würde dir aber trotzdem gerne noch kurz meine Dateien zeigen.
                                      Hier gehts hin!

                                      Die Links aus dem footer öffnen sich nämlich nicht so wie es sein sollte, obwohl ich keine Fehler finde! Nach klicken auf den Link öffnet er (FF) das pdf passend im Main-frame aber gleichzeitig macht er (FF) einen neuen leeren Tab auf.
                                      Danke schon mal fürs drüber kucken!

                                      SG, Andi

                                      1. Hallo Paulchen ich bins nochmal.

                                        Also das Problem mit deinem Beispiel habe ich jetzt auf 2 Komponenten einkreisen können. Diesen Fehler, dass nach dem ersten Öffnen eines pdfs kein andere Link mehr öffnet, zeigt nur der IE9.
                                        Getestete Konstellationen bisher sind Vista64bit mit IE9(32bit)und Adobe Reader, und Win7-64bit mit IE9(32bit) und Adobe Reader.
                                        Beide Konstellationen auf unterschiedlichen Rechnern von unterschiedlichen Personen zeigen die selbe Symptomatik.
                                        Die 64bit-Versionen des IE9 haben gar keinen Sinn, da diese den Adobe Reader nicht implementieren können, da es kein passendes Plugin gibt.
                                        Das ist für mich natürlich jetzt der Supergau. Überall funktionierts nur bei der Konstellation die wir haben (Win7 + IE9) funktionierts nicht. Und ich als "Greenhorn" weiß natürlich gar nicht warum das so ist und erst recht nicht wie mans "besser machen" bzw. beseitigen kann.  ;-((
                                        Ich kann somit nur auf dich Paulchen oder einen anderen Profi hoffen, dass dieses (meines) Problem behoben wird. Solltest du keine Zeit oder keine Lust mehr haben hier weiter zu graben, kann ich das verstehen. Ich will hier nicht deine wertvolle Zeit für mich beanspruchen. Solltest du dir (oder jemand anderes) dennoch die Zeit nehmen (können) wäre ich sehr sehr dankbar, da dies schon eine wirklich wichtige Funktion in meinem "Programm" wäre.

                                        Einen schönen Abend noch zusammen.

                                      2. Hallo,

                                        Die Links aus dem footer öffnen sich nämlich nicht so wie es sein sollte, obwohl ich keine Fehler finde! Nach klicken auf den Link öffnet er (FF) das pdf passend im Main-frame aber gleichzeitig macht er (FF) einen neuen leeren Tab auf.

                                        Im 000_footer.html dieser Zeile Code <base target=mainFrame> ist FALSCH. Zum einen heißt der Frame nur main zum andern wird die Seite über Javascript geladen. Also weg mit der Zeile.

                                        zum IE9 lese diesen Artikel: Anzeigen von PDF-Datei im Web nicht möglich. Da kann ich dir nicht weiterhelfen da ich die 32-Bit-Version von win8 und IE10 verwende.

                                        LG

                                        1. Hallo Paulchen.

                                          DANKE DANKE DANKE!!! Ich wünsche dir noch einen guten Rutsch ins neue Jahr.
                                          Sollte ich mal die Lösung gefunden haben werde ich sie hier ergänzen.

                                          SG!

                                          1. Hallo Paulchen,

                                            ich habe gesagt ich melde mich nochmal wenn ich eine Möglichkeit gefunden habe.
                                            Leider hat der IE9 da irgend einen Fehler den keiner so richtig definieren kann. Ich habe das Problem jetzt so gelöst, indem ich im Metatag der index.html sage, dass er die Seite wie der IE8 ausführen soll mit:
                                            <meta http-equiv="X-UA-Compatible" content="IE=8" />
                                            So funktionierts nun wenigstens auch im IE9.

                                            Ich möchte dir nochmals herzlich danken und wünsche dir und allen hier ein tolles Jahr 2013!

                                            SG!