Problem mit iframe-source bei dynamischen OnClick

Pius Hermit

Erfahrenes Mitglied
Hallo liebe Leute,

ich versuche gerade durch einen Array von img´es per onclick ein anderes Frame
zu steuern. Das Bild auf dem Frame erscheint aber nur im FF für einen kurzen Moment.
Ich glaube, dass das Laden des Frames-Sources nicht nachhaltig ist !?

Code:
 	this.leinwand = function(){
		var oDoc = "";
		if (document.getElementById(this.lframe).contentDocument) {
			oDoc = document.getElementById(this.lframe).contentDocument;
			if (oDoc.document) oDoc = oDoc.document;
		}
		else {
			oDoc = document.frames(this.lframe).document;
		}
		return oDoc;
	}

 	this.leinwandFrame = function(){
		var oDoc = "";
		if (document.getElementById(this.lframe)) {
			oDoc = document.getElementById(this.lframe);
		}
		else {
			oDoc = document.frames(this.lframe);
		}
		return oDoc;
	}

	this.zeige = function(s){
		this.leinwandFrame().src = "leer.html";
		if (this.leinwand().getElementById(this.letzteAnzeige)) {this.leinwand().body.removeChild(this.letzteAnzeige);};
		anzeige = this.leinwand().createElement("img");
		this.letzteAnzeige = anzeige;
		this.leinwand().body.appendChild(anzeige);
		anzeige.src 			= s;
		anzeige.style.position  = "absolute";
		anzeige.style.top 		= "10%";
		anzeige.style.left 		= "20%";
		anzeige.style.height 	= "80%";
	}

Weiß einer von Euch Göttern vielleicht Abhilfe?
 
Moin,

diverse Sachen:
1.frames ist keine Methode, sondern eine Eigenschaft des window-Objektes,
der Zugriff sollte also so vorgenommen werden:
Code:
window.frames['namedesframes']
dies würde dir wiederum ein window-Objekt zurückgeben, die Adresse des darin befindlichen Dokumentes kannst du über dessen location-Eigenschaft ändern.

Beachte, dass dies alles keine DOM-Methoden sind, diese kannst du für dein Vorhaben nicht anwenden, denn die DOM-Methoden liefern dir lediglich ein Element-Objekt(DOM-Element-Knoten), und kein window-Objekt.

Mit namedesframes meine ich daher auch das name-Attribute, ein Zugriff über die ID wird in den meisten Browsern fehlschlagen.
 
Oh, vielen Dank, Sven.
Irgendwie habe ich halbwegs funktionierende function´s archiviert, die ich immer
wieder anwende. Aber die funktionieren anscheinen nicht immer...
Muß wohl mein Archiv bezgl. Frames noch einmal überarbeiten ;-) .
Das Problem habe ich aber jetzt mit php gelöst, indem ich die src des frames mit
get versehen, und das Bild php-dynamisch eingebunden haben.
Ein Verdacht: Könnte es sein, dass während des Abarbeiten des Befehles der
frames-source-Zuweisung (die längerer Dauer ist) ein folgender Task durch den Browser mit Zuweisung der img-source und dem img-style abgearbeitet wurde?
Mir schien es nämlich so, als wenn das Bild kurzfristig verankert, der Frameinhalt
aber erst später festgelegt, und die Frameseite so überschrieben würde?!
Code:
 	this.leinwand = function(){
		var oDoc = "";
		if (document.getElementById(this.lframe).contentDocument) {
			oDoc = document.getElementById(this.lframe).contentDocument;
			if (oDoc.document) oDoc = oDoc.document;
		}
		else {
			oDoc = document.frames(this.lframe).document;
		}
		return oDoc;
	}

 	this.leinwandFrame = function(){
		var oDoc = "";
		if (document.getElementById(this.lframe)) {
			oDoc = document.getElementById(this.lframe);
		}
		else {
			oDoc = document.frames(this.lframe);
		}
		return oDoc;
	}

	this.zeige = function(s){
		this.leinwandFrame().src = "leer.php?bild="+s;
	}
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>leer</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="/CSS/index.css" media="all" />
</head>
<?php 
$b = $_GET['bild'];
echo "<img id='Bild' src=".$b."></img>";
?>
</body>
</html>
funktioniert nämlich !
Dankbar und neugierig,
Ulrich
 
Zurück