Synchronny load/unload iframe-ov
- tolljump
- Člen | 47
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
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)