Synchronny load/unload iframe-ov

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
tolljump
Člen | 47
+
0
-

Zdravim vas!
Po dlhsej dobe prichadzam pri programovani svojho projektu na jeden dalsi zadrhel, ktory sa mi uz dlhsiu dobu nedari vyriesit univerzalne pre rozne prehliadace a tak aby to bolo funkcne. Vopred sa ospravedlnujem ze tato tema nieje nejak priamo spojena s Nette, iba tym ze cela aplikacia bez na Nette.

No problem je nasledovny:

Potrebujem dosiahnut to, aby sa mi vo frameset nacitavali 2 iframe-y v mnou zadanom poradi. Cize ak sa nacita prvy iframe (onload), tak az po tom aby nacitalo druhy iframe. A nasledne naopak pri zatvarani okna,aby sa najskor zatvoril a ukoncil skript v druhom iframe a az tak sa ukoncil prvy iframe.

Jedna sa o komunikaciu kurzu v standarde SCORM a jeho API ktore mam v LMS, ak by to niekomu nieco vravelo a mal by na to osvedcenu pomocku.

Dakujem pekne za akekolvek rady, pripadne mozem v dalsom prispevku nahodit javascripty ktore mam vytvorene.

tolljump
Člen | 47
+
0
-

Vidim ze nejak asi nikto nevie co tym presne myslim, tak skusim nahodit kod, ktory to momentalne riadi.

Javascript v head

<script type="text/javascript">

	function setSource(cid, url){
		var myframe = document.getElementById(cid);
		if(myframe !== null){
			if(myframe.src){
				myframe.src = url;
				return true;
			}else if(myframe.contentWindow !== null && myframe.contentWindow.location !== null){
				myframe.contentWindow.location = url;
				return true;
			}else{
				myframe.setAttribute('src', url);
				return true;
			}
			return false;
		}
	}

	function setIframes(apiUrl,courseUrl){
		setSource('apiFrame',apiUrl);
		document.getElementById('apiFrame').onload = function(){
			setSource('courseFrame',courseUrl);
		}
		document.getElementById('apiFrame').attachEvent("onload", setSource('courseFrame',courseUrl));

	}

window.onload = function(){
	var apiUrl = {link "Player:scormApi", id=>$courseId,SCOInstanceID=>$SCOInstanceID};
	var courseUrl = "{!$basePath}/courses/{!$courseId}/1/{!$startFile}";

	setIframes(apiUrl,courseUrl);
}
</script>

a Iframe-y ktorych obsah sa meni

<frameset frameborder="0" framespacing="0" border="0" rows="*" cols="0px,200px,*" onbeforeunload="API.LMSFinish('');" name="primaryFrame" id="primaryFrame" onunload="API.LMSFinish('');">
		<frame  id="apiFrame" name="API" src="" />
		<frame src="{link "Player:scormNavigation", id=>$courseId}" name="navigation" id="scormNavigation" src="" />
		<frame  id="courseFrame" name="course" src="" />
	</frameset>

Iframe „navigation“ sa nemeni, ten ostava stale rovnaky. Vytvaraju sa v nom odkazy, ktore obsahuju funkciu parent.setIframes(…). Nepodstatne…
Potrebujem tie 2 iframe-y API a course nahravat v poradi 1. API, 2. course a nasledne pri zatvoreni aby sa najskor zatvoril iframe „course“ a po nom „API“.

Editoval tolljump (31. 12. 2012 16:25)