JavaScript Nicht in neues Fenster öffnen

gfeschu

Ensign
Registriert
Aug. 2010
Beiträge
147
Hallo zusammen.

Musste wegen paar Gründe mein Iframe in einem Button "verstecken" damit der Inhalt nicht sofort ersichtlich ist.

Hier der Code:

Code:
	//  String konvertieren zu llview.exe
    var llview = "`.Url()`"
    var llview_new = "`.ServiceString( .fArgs ) + "://" +  .fArgs.HTTP_HOST`"
                
    var result = llview.search(/llisapi.dll/i)
                
    if (result != -1)
		var llview_new1 = llview.replace(/llisapi.dll/g, "llview.exe");
    else
                
		var llview_new1 = llview.replace(/livelink.exe/g, "llview.exe");
                               
    var llview_new = llview_new.concat(llview_new1).concat("/Preview.html?func=doc.view&nodeId=`node.pID`&docTitle=Preview")
                                
    //   End String konvertieren zu llview.exe

Code:
	function showvorschau () {
	
		document.write ('<iframe name="iframe_a"  src=' + llview_new + ' WIDTH=100% HEIGHT=750 ></iframe>');
	
	}

Code:
	<TD colspan="2">
			
		<button onclick="showvorschau();">Vorschau anzeigen</button>

                    

	</TD>

Leider öffnet sich das Iframe in ein neues Fenster, was nicht geschehen sollte.
Jemand einen Tipp?
 
Möglichkeiten:

1) Setzt das Iframe einfach in ein Div und dieses setzt du auf display: none. Wenn man jetzt vorschau drückt, dann wird das Div auf display: block gesetzt und dein Iframe wird auch eingezeigt.

So ist das Iframe immer da, immer ansprechbar und öffnet sich nicht ein einem neuen Fenster.

2) Iframe leer lassen und erst beim Vorschau-Button füllen.


Ersteres braucht erst den Platz, wenn du drückst, letzteres nimmt auch leer den Platz ein. Wenn man es aufwendiger macht, dann kann man aber auch die Nachteile der jeweiligen Möglichkeit umgehen.

Bei 1) das Div als eine Art Overlay (Position : absolute, mittig auf den Bildschirm platzen.. transparenten background div .. und bei klick auf den Hintergrund gehen beide Divs wieder weg (alternativ noch buttons in das iframe-div packen)

usw.

Je nach dem wie Aufwendig und schön du es magst.
 
Zuletzt bearbeitet:
Oder machs gleich richtig, schieß den iframe in den Wind und verwende AJAX, um die Inhalte zur Laufzeit nachzuladen. Geht natürlich nur bei gleicher Herkunft (sprich: Domain). Ansonsten knallt dir der XSS-Schutz eine vor den Latz.
 
Das Problem ist das es erst geladen werden darf wenn man auf "Vorschau" klickt.
Deswegen wird Lösung 1 wohl nicht gehen.

Bei der zweiten Lösung kanns die Parameter irgwie nicht richtig übergeben von der oberen Funktion. Hat da jemand ein Tipp?
Kommt nur "The page cannot be found", wird also irgwie nicht wirklich was übergeben. Hab aber schon " und ' ausprobiert, bei src=

Greez Gfeschu
 
Nochmal: AJAX ist die Lösung. Verwirf alles, was du hast, und bau es neu über einen asynchrone Request.
 
Leider habe ich nicht gross Erfahrung mit Ajax (Jquery.Ajax).
Was wäre denn ein möglicher Lösungsansatz, bzw. habt ihr mir Tipps dafür?

Darf halt einfach erst geladen werden wenn der Button gedrückt wird. (Wegen der Protokollierung...)

Gruss Gfeschu
 
find das bissel umständlich.

HTML:
$('div').load(url [, parameter]);

ist doch viel kürzer und macht das gleiche, aber ich weiß, viele Wege .. und so ;)
 
Zurück
Oben