frame mit script, das andere frame (ohne script) reloaden?
oli
- javascript
hallo freunde,
ich habe folgendes problem, ich habe ein frameset mit z.b. 2 frames namens "main" und "banner".
jetz möchte ich gerne jedesmal, wenn sich im main frame das document ändert, das sich im banner frame das document reloadet.
!!aber im main frame document soll kein script stehen!!
meine erste idee war im frameset onload eine funktion aufzurufen, die den 2. frame reloadet, aber das event trat nicht mehr auf nach dem ersten laden.
dann dachte ich an eine funktion, die ich ins banner.html schreibe, welches mittels
function oqTest(){
alert("oqTest");
window.parent.main.window.document.onunload = window.init;
self.location.reload();
}
function init(){
window.setTimeout("oqTest()",60);
}
top.window.onload = init;
wenn das ganze window geladen ist, aus dem banner frame in dem main frame ein onunload installiert, welches nach timeout im dann neuen main frameset wieder eine onunload function installiert.
das ganze hapert aber schon beim ie an folgendem fehler:
Erlaubnis verweigert
kann ich die erlaubnis irgendwie erteilen.
für den netscape habe ich mir noch gar keine gedanken gemacht.
wäre glücklich über hilfe.
oli.
sers!
schau mal das an:
top.window.onload = init;
Hier weist du einem Event den Inhalt einer Variable zu, das ist sinngemäß nicht möglich (daher kommt wahrscheinlich der Fehler), es müsste umgekehrt aber funktionieren:
init=top.window.onload;
weiters hast du immer:
window.parent.main...
Ich bezweifle, dass das funktioniert - also ich kenns nur so:
parent.main...
mfg watchout
sers!
schau mal das an:
top.window.onload = init;
imho weise ich hier einem eventhandler eine funktion zu.
Hier weist du einem Event den Inhalt einer Variable zu, das ist sinngemäß nicht möglich (daher kommt wahrscheinlich der Fehler), es müsste umgekehrt aber funktionieren:
init=top.window.onload;
ich bin ja gerne bereit völlig neues zu lernen, aber vielleicht kann mir das noch jemand anderes bestätigen, daß das richtig ist.
weiters hast du immer:
window.parent.main...
Ich bezweifle, dass das funktioniert - also ich kenns nur so:
parent.main...
ich denke das window objekt ist die wurzel von der im dom alles ausgeht, ich kann es angeben oder weglassen.
mfg watchout
ich danke dir für deine hilfe, aber ich glaube daß die punkte nicht das entscheidende sind, weshalb es nicht funktioniert. ich denke es sind die browser-sicherheitsmechanismen, die fenster schützen. aber ich bin mir nicht sicher und weiß auch nicht ob und wie ich die außer kraft setzte.
viele grüße,
oli.
Hi Oli,
ich denke es sind die browser-sicherheitsmechanismen, die fenster schützen. aber ich bin mir nicht sicher und weiß auch nicht ob und wie ich die außer kraft setzte.
evtl. liegen dein "banner" und dein "main" in unterschiedlichen domains:
frame banner: http://www.werbung.de/banner.html
frame main: http://www.meineseite.de/main.html
dann darfst du nicht von einem frame auf den anderen zugreifen, wobei http://meineseite.de und http://www.meineseite.de auch unterschiedlich sind.
ob der IE so clever ist und die gemeinsamkeit der domain in einem einfachen
"/banner.html"
und einem ausführlichen
"http://www.meineseite.de/main.html"
erkennt mußt du mal probieren
Viel Spaß
CirTap
mercy CirTap,
habe etwas gefunden, was ungefähr macht was ich will.
das problem ist in der tat die browser-sicherheit, die es verbietet in window-objekte zu schreiben, die nicht auf diesem host liegen.
<script>
function res(){
top.banner.window.setTimeout("top.banner.window.location.reload();", 900);
return true;
}
function init(){
top.main.window.onunload = top.banner.window.res;
return true;
}
function trufu(){
top.banner.window.setTimeout("top.banner.window.init();", 3000);
return true;
}
onerror = trufu;
onload = init;
</script>
ich möchte ja gerne bei jedem wechsel der seite im main-frame das banner-frame reloaden.
ich lebe sehr gut damit, daß der banner-frame nicht reloaded wird wenn eine partner-seite im main-frame ist.
!!ich würde aber gerne, wenn im main-frame wieder eine seite vom lokalen server steht, den banner reloaden lassen.!!
das macht er aber nicht ohne weiteres, da ein fehler auftritt wenn versucht wird in das geschützte frame (wenn in main eine partner seite geladen ist) zu schreiben und jede weitere skriptausführung abgebrochen wird.
deshalb habe ich ja den error handler eingebaut.
meine frage (das problem): die errorhandler funktion arbeitet nicht so wie ich mir das vorstelle, warum?
weiß wer was. (ist irgendwer meinen ausführungen bis hierher gefolgt?)
großen dank schon mal.
viele grüße,
oli.