Thread View: pl.comp.lang.javascript
1 messages
1 total messages
Started by Jaroslaw Tomczak
Tue, 22 Jan 2002 13:16
Problem z obiektem w ,,top window'' w IE5
Author: Jaroslaw Tomczak
Date: Tue, 22 Jan 2002 13:16
Date: Tue, 22 Jan 2002 13:16
98 lines
4043 bytes
4043 bytes
Czesc!
Moj problem najprawdopodobniej ma trywialne rozwiazanie, ale
od paru godzin go nie znalazlem. Problem generalnie jest zwiazany
z (nie)przechowywaniem wlasnych obiektow w oknie najwyzszego poziomu
(top.window) w IE5. W NN wszystko dziala zgodnie z moimi oczekiwaniami.
Mam wiec obiekt, ktory ma za zadanie zachowac dane z formularza
podanego w konstruktorze przy pomocy metody save(), a metoda restore()
ma je odtworzyc w owym formularzu (kod usunalem dla czytelnosci).
<CODE>
// FormData.js
function FormData(form) {
this.form = form;
}
FormData.prototype.save = function() {
alert("FormData.save()");
}
FormData.prototype.restore = function() {
alert("FormData.restore()");
}
</CODE>
Glowna strona zawiera dwie ramki: jedna do nawigacji, druga z formularzem
(lub inna strona). Jednoczenie przechowuje obiekt, ktory zachowuje
dane z formularza (searchFormData)
<CODE>
<!-- index.html -->
<HTML><HEAD>
<SCRIPT type="text/javascript">
var searchFormData = null;
</SCRIPT>
</HEAD>
<FRAMESET rows="100,*">
<FRAME src="toolbar.html" name="toolbarFrame" scrolling="auto">
<FRAME src="main1.html" name="mainFrame" scrolling="auto">
</FRAMESET>
</HTML>
</CODE>
Sam formularz laduje swoje dane z obiektu searchFormData przy zaladowaniu
strony (poza pierwszym ladowaniem) i zachowuje je przy wyjsciu ze strony:
<CODE>
<!-- main1.html -->
<HTML><HEAD>
<SCRIPT type="text/javascript" src="FormData.js"></SCRIPT>
<SCRIPT type="text/javascript">
function init() {
if (top.searchFormData == null)
top.searchFormData = new FormData(searchForm);
else
top.searchFormData.restore();
}
function store() {
if (top.searchFormData != null)
top.searchFormData.save();
else
alert("searchFormData is null");
}
</SCRIPT>
</HEAD><BODY onLoad="init();" onUnload="store();">
<FORM name="searchForm">
<INPUT type="checkbox" name="queryNegate">
<INPUT type="text" size="45" name="queryData">
</FORM></BODY></HTML>
</CODE>
Dla uzupelnienia podaje dwie ostatnie strony:
<CODE>
<!-- main2.html -->
<HTML><BODY>Main 2</BODY></HTML>
</CODE>
<CODE>
<!-- toolbar.html -->
<HTML><BODY>
<A href="main1.html" target="mainFrame">main 1</A>
<A href="main2.html" target="mainFrame">main 2</A>
</BODY></HTML>
</CODE>
Gdy strona index.html jest ladowana po raz pierwszy obiekt
top.searchFormData jest tworzony, a przy wyjsciu ze strony main1.html
wywolywana jest (zgodnie z oczekiwaniami) jego metoda save().
Przy powrocie do strony main1.html top.searchFormData ma wartosc
rozna od null, ale wywolanie metody restore() konczy sie niepomyslnie
z komunikatem:
Code eines freigegebenen Skripts kann nicht ausgefuehrt werden
(niestety mam ,,zlokalnizowane'' windowsy), co w wolnym tlumaczeniu
oznacza:
Kod skryptu zaakceptowanego do wykonania nie moze byc wykonany.
Jakies pomysly?
Pozdrowienia
--
;; Jaroslaw Tomczak
(let ((us 'http://www2.chemie.uni-erlangen.de))
(visit us))
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads