• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

"Vorschau" funktioniert nicht im IE 6/7

jsnoob

New member
Hi,
ich möchte eine "Vorschau" für einen Text erstellen, den man in einer Textarea eingeben kann.
Es wird ein neues Fenster geöffnet und da wird dann der Inhalt der Textbox aus dem opener-window geholt.

Die IE's geben mir allerdings nur "UNDEFINED" aus.

Hier mal ein bischen Code:
PHP:
function showPreview() {

	var desc=document.getElementById('Text_Desc').value;

	var bwin=window.open("preview.php","Preview","width=750,height=650,resizable=no,status=no,scrollbars=yes,hotkey=no");
	bwin.focus();

	return true;

}

function getPreview() {

	var desc = opener.desc;

	document.preview.desc_prev.value = desc;

	document.forms[0].submit()

}

Aufruf 1. Seite:
HTML:
<input src="./pfad/bb_preview.png" alt="preview" onclick="showPreview();" type="image" width="21" height="21" />

Aufruf 2. Seite:
HTML:
<script type='text/javascript'>window.onload = function() { getPreview(); }</script>

Was davon kapiert der IE nicht, oder wo liegt mein Fehler?

Danke schonmal :)
 
Aber wieso nur im IE?
Im FF z.b. funktioniert es einwandfrei.

Das würde bedeuten, dass IE entweder ein Problem mit
var desc=document.getElementById('Text_Desc').value;
oder
var desc = opener.desc;
hat.
Aber was davon, und wie kann ich das umgehen?

Edit:
ich hab noch ein bischen rumgespielt und mein Problem schein die opener-Zeile zu sein.
Stellt sich nur die Frage warum?
Ein
HTML:
var desc = opener.document.getElementById('Text_Desc').value;
In der 2ten Funktion erzielt wieder im IE nicht die gewünschte wirkung.
Im FF funktioniert es wieder.
 
Zuletzt bearbeitet:
Ach, mein Fehler. desc ist eine lokale Variabel, die nur innerhalb der Funktion sichtbar ist, folglich kann opener.desc nicht funktionieren, weder im IE noch im FF.
 
Ach, mein Fehler. desc ist eine lokale Variabel, die nur innerhalb der Funktion sichtbar ist, folglich kann opener.desc nicht funktionieren, weder im IE noch im FF.

Naja, aber dann sollte doch zumindest diese Funktion einen Erfolg bringen:
PHP:
function getPreview() {

	var desc = opener.document.getElementById('Text_Desc').value;

	document.preview.desc_prev.value = desc;

	document.forms[0].submit();

}
Aber auch die funktioniert im IE nicht, aber dafür im FF.
Cache ist geleert, mein F5 bald kaputt und trotzdem geht nix.

Oder muss ich 'opener' auch noch irgendwie definieren?
Würde zwar meinem Verständnis nach den Sinn ad absurdum führen, aber man weiss ja nie.
 
Wenn es das Element mit der ID gibt und dieses ein value Attribut hat, sollte das funktionieren. Das kann man übrigens auch testen.
 
Naja, das Element ist eine Textarea, was ja offiziell (lt. Doku) kein Attribut value hat.
Der Zugriff auf 'value' scheint bloß trotzdem bei jedem im I-Net zu funktionieren, ausser bei mir :(

Aktuell sieht das bei mir so aus:
Hauptseite:
PHP:
function showPreview() {

	var bwin = window.open("preview.php","Preview","width=750,height=650,resizable=no,status=no,scrollbars=yes,hotkey=no");
	bwin.focus();

	return true;

}
<input type="image" src="{THEME_COLOR_PATH}/gfx/bb_preview.png" alt="preview" width="21px" height="21px" onClick="showPreview();" />
<textarea name="desc" id="Text_Desc" class="text_desc" cols="50" rows="20">{DESC}</textarea>

Popup:
PHP:
function getPreview() {

	var desc = opener.document.getElementById('Text_Desc').value;

	self.document.forms[0].desc_prev.value = desc;

	self.document.forms[0].submit();

}
<form name="preview" action="/* echo $_SERVER['PHP_SELF']; */" method="post">
<div style="display:none;">
<textarea name="desc_prev"></textarea>
</div>
</form>
<script type='text/javascript'>window.onload = function() { getPreview(); }</script>

Das ist so der letzte Stand der mMn funktionieren müsste, was im FF ja auch der Fall ist.
/** */ hab ich jetzt mal der Lesbarkeit wegen eingebaut.

Ich kapier es einfach nicht. :(
 
Ka, was beim IE das Äquivalent zur FF-Fehlerkonsole ist.
Im FF ist jedenfalls nix in der Fehlerkonsole zu finden.

Anzumerken:
Ich habe sämtliches JS in eine Datei ausgelagert, die im Header geladen wird mit:
PHP:
<script src="{THEME_COLOR_PATH}/css/script.js" type="text/javascript"></script>

Aber ob das JS in einer Datei steckt oder direkt im Header sollte doch keinen Unterschied machen, oder?
 
nein macht es nicht.
Der IE zeigt JS Fehler durch ein kleines glebes Dreieck in der Statusleiste an, auf die du Doppelklicken kannst.
 
Kein Fehler. :(
Wie könnte man das Übertragen in ein anderes Fenster denn noch lösen?
Vllt. hab ich mit einer anderen Variante mehr Glück.

Da ich immer 'undefined' bekomme, wird er wohl ein Problem mit dem 'opener' haben.
Gibts dafür einen "Ersatz"?
 
Wie könnte man das Übertragen in ein anderes Fenster denn noch lösen?
Vllt. hab ich mit einer anderen Variante mehr Glück.
Sie funktioniert im IE genauso, wie du es hier in Ausschnitten zeigst, wenn es bei dir nicht funktioniert machst du irgendwas falsch, nur dieses irgendwas kennen wir nicht.

So ist es eine lustige Raterunde. Hilft dir nicht und uns nicht. Ich hatte dir aber auch schon mal gesagt, dass du testen kannst.

Also wenn z.b. sowas hast:
PHP:
 var desc = opener.document.getElementById('Text_Desc').value;
Machst du davor einen test:
PHP:
alert(
'opener = ' + opener 
+ '\nopener.document = ' + opener.document
/* usw. bis du jedes Element getestet hast */
);

Alternativ könnetst du auch mal ein Beispiel irgendwo Online zeigen.
 
So, bin schon sehr viel weiter.
Als ich dir eine Online-Version erstellen wollte, hat der IE das ganze einwandfrei gemacht.

D.H.: Lasse ich die Seite dynamisch erstellen, will der IE nicht. Kopiere ich aber den Quelltext aus dem Browser in eine extra Datei und rufe meine preview() von dort aus auf, dann geht alles.

Wobei JS doch eigentlich auch auf den Browser-Quelltext zugreifen sollte, wie ich als ich die statische Seite "gebastelt" hab.

Ich werd das komplette PHP-Script nochmal umschreiben, und das ganze mit der bereinigten Form nochmals testen. Mir ist nämlich auch aufgefallen, dass der FF beim anzeigen des Quelltextes den Inhalt neu laden musste.
Ich schätze mal, dass es da irgendwo im Argen liegt.

edit: Beim Test gibt der IE nur
PHP:
opener = [object]
opener.document = [object]
zurück.
 
Zuletzt bearbeitet:
So, hab das Problem gelöst.
Die ID der Textarea hat sich wohl mit dem Namen des Formulars gebissen. Jedenfalls für den IE.
PHP:
<form action="datei.php" name="text_desc" method="post"
und
<textarea name="desc" id="Text_Desc"
vertragen sich wohl nicht.

name="textdesc" gesetzt und schon funktioniert es.

Dank dir nochmal für deine Geduld. :)
 
Zurück
Oben