HighDots Forums  

Probleme mit top.frames[''] in Safari 3.0.4

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss Probleme mit top.frames[''] in Safari 3.0.4 in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Thomas Bandt
 
Posts: n/a

Default Probleme mit top.frames[''] in Safari 3.0.4 - 03-16-2008 , 04:03 PM






Hallo zusammen,

ich habe eine browserbasierte Softwareanwendung, die ein
recht verschachteltes Frameset verwendet. Hier möchte ich
nun über

top.frames["toolbar"].Funktion();

eben jene JavaScript-Funktion aufrufen. Das funktioniert
in Opera, IE6, IE7 und Firefox problemlos, nur Safari 3.0.4
zickt hier rum - sowohl die Windows- als auch die Mac-
Version (beides eben getestet).

Ein alert(top.frames["toolbar"]) liefert immerhin noch
[object BarInfo], jeder Versuch irgendwas des Frames
anzusprechen schlägt aber fehl - selbst location ist
leer. Die JavaScript-Konsole meldet beim Aufruf der
Funktion dann schlicht "Undefined value";

Das ist jetzt insofern nicht so dramatisch, als dass der
Browser den Benutzer ja nicht direkt mit Fehlermeldungen
penetriert und ich auf die Funktionen verzichten könnte,
aber nachdem die Anwendung zu 99,5% perfekt im Safari
läuft hätte ich halt gerne dieses blöde halbe Prozent
auch noch.

Irgendwelche Ideen, bzw. kann das jemand reproduzieren?

P.s.: Es läuft alles unter der selben Domain, im
Moment ist es sogar nur localhost)

--
Gruß, Thomas [MVP ASP/ASP.NET]
http://www.69grad.de - Beratung, Entwicklung
http://www.dotnetjob.de - .NET-Stellenbörse
https://www.xing.com/net/asp.net/ - ASP.NET bei XING
http://blog.thomasbandt.de - Thomas goes .NET

Reply With Quote
  #2  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Probleme mit top.frames[''] in Safari 3.0.4 - 03-16-2008 , 06:53 PM






Thomas Bandt wrote:
Quote:
Ein alert(top.frames["toolbar"]) liefert immerhin noch
[object BarInfo], jeder Versuch irgendwas des Frames
anzusprechen schlägt aber fehl - selbst location ist
leer. Die JavaScript-Konsole meldet beim Aufruf der
Funktion dann schlicht "Undefined value";
Das kann ich für Safari 3.0.4 (523.15) und Windows XP SP-2 bestätigen. Zwar
nicht für top.frames["toolbar"] -- damit sprichst Du offenbar die
Safari-Toolbar an statt Deines Frames; die einzige aufzählbare Eigenschaft
des Objekts ist anscheinend `visible' (read only) -- aber für Funktionen,
die in Dokumenten in anderen Frames (hier: foo) definiert wurden und mit
window.parent.frames["foo"].funktion() aufgerufen werden sollen; jene
Eigenschaft ist schlicht nicht verfügbar.

Quote:
[...]
Irgendwelche Ideen, bzw. kann das jemand reproduzieren?
Ja. Ich sehe aber nicht, wie man das Problem umgehen könnte. Du solltest
ausserdem bedenken, dass Safari 3.0.4 noch eine Beta-Version ist. Dafür
irgendwelche Verrenkungen zu machen, halte ich daher für sinnfrei.

Den Test auf die Methode habe ich ohnehin eingebaut, weil ich nicht davon
ausgehen kann, dass das Dokument im Frameset angezeigt wird.

var o;
if (typeof window != "undefined"
&& window
&& typeof window.parent != "undefined"
&& (o = window.parent)
&& typeof o.frames != "undefined"
&& (o = o.frames)
&& typeof o["ufpdb_banner"] != "undefined"
&& (o = o["ufpdb_banner"])
&& isMethod(o, "makeLeftBanner"))
{
o.makeLeftBanner();
}

Quote:
P.s.: Es läuft alles unter der selben Domain, im
Moment ist es sogar nur localhost)
Dito hier.


PointedEars, mit passender zufälliger Signatur
--
Wenn es dort funzt, dann ist für Altlasten einfach eine Upgrade-Aufforderung
einzubauen. Du kannst einer Mücke nicht beibringen, einen Haufen zu machen
wie ein Elefant. Wer so große Häufchen haben will, soll sich gefälligst
einen Elefant zulegen.
-- Georg Maaß in dcljs <an94b3$c0ogv$3 (AT) ID-3551 (DOT) news.dfncis.de>


Reply With Quote
  #3  
Old   
Thomas Bandt
 
Posts: n/a

Default Re: Probleme mit top.frames[''] in Safari 3.0.4 - 03-17-2008 , 04:38 AM



Thomas 'PointedEars' Lahn schrieb:
Quote:
Das kann ich für Safari 3.0.4 (523.15) und Windows XP SP-2 bestätigen. Zwar
nicht für top.frames["toolbar"] -- damit sprichst Du offenbar die
Safari-Toolbar an statt Deines Frames
That's it. Safari hält scheinbar eine Liste reservierter
Schlüsselwörter bereit, die für Fensternamen nicht
verwendet werden dürfen - darunter jetzt definitiv
"toolbar" und "menubar" - sieht verdächtig nach dieser
Liste hier aus:
http://de.selfhtml.org/javascript/ob...indow.htm#open

Nachdem ich die zwei IDs bzw. Namen geändert habe,
geht es jetzt einwandfrei.

Danke für den Hint! :-)

--
Gruß, Thomas [MVP ASP/ASP.NET]
http://www.69grad.de - Beratung, Entwicklung
http://www.dotnetjob.de - .NET-Stellenmarkt
https://www.xing.com/net/asp.net - ASP.NET bei Xing!
http://blog.thomasbandt.de - Thomas goes .NET


Reply With Quote
  #4  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Probleme mit top.frames[''] in Safari 3.0.4 - 03-17-2008 , 03:02 PM



Thomas Bandt wrote:
Quote:
Thomas 'PointedEars' Lahn schrieb:
Das kann ich für Safari 3.0.4 (523.15) und Windows XP SP-2 bestätigen.
Zwar nicht für top.frames["toolbar"] -- damit sprichst Du offenbar die
Safari-Toolbar an statt Deines Frames

That's it. Safari hält scheinbar eine Liste reservierter Schlüsselwörter
bereit, die für Fensternamen nicht verwendet werden dürfen - darunter
jetzt definitiv "toolbar" und "menubar" - sieht verdächtig nach dieser
Liste hier aus: http://de.selfhtml.org/javascript/ob...indow.htm#open
ACK

Quote:
Nachdem ich die zwei IDs bzw. Namen geändert habe, geht es jetzt
einwandfrei.
Prima

Quote:
Danke für den Hint! :-)
Gern geschehen. Die Ursache für das Versagen war bei mir glücklicherweise
auch nur eine Race Condition (Zielframe war noch nicht fertig geladen).


PointedEars, Thomaten[tm] auf den Augen gehabt habend
--
Kopf = {};
Kopf.onzahnweh = aua;
function aua(){alert('Aua!');}
(Georg Maaß in dcljs <b57n6s$26cacq$1 (AT) ID-3551 (DOT) news.dfncis.de>)


Reply With Quote
  #5  
Old   
Thomas Bandt
 
Posts: n/a

Default Re: Probleme mit top.frames[''] in Safari 3.0.4 - 03-17-2008 , 04:17 PM



Thomas 'PointedEars' Lahn schrieb:
Quote:
Gern geschehen. Die Ursache für das Versagen war bei mir
glücklicherweise
auch nur eine Race Condition (Zielframe war noch nicht fertig geladen).
Lässt sich das eigentlich vernünftig abfangen? Ich
habe mir bisher mit setTimeout() beholfen, aber so
ganz glücklich ist das nicht.

--
Gruß, Thomas [MVP ASP/ASP.NET]
http://www.69grad.de - Beratung, Entwicklung
http://www.dotnetjob.de - .NET-Stellenbörse
https://www.xing.com/net/asp.net/ - ASP.NET bei XING
http://blog.thomasbandt.de - Thomas goes .NET


Reply With Quote
  #6  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: Probleme mit top.frames[''] in Safari 3.0.4 - 03-17-2008 , 04:51 PM



Thomas Bandt <info.without.that.five.last.words (AT) thomasbandt (DOT) de> wrote:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Bitte korrigiere Deinen "From"-Header, so dass er RFC1036, Abschnitt 2.1.1,
bzw. RFC2822, Abschnitt 3.4, sowie der "Netiquette für 'de.*'" entspricht.
Zur Spamvermeidung lassen sich (gültige) "From"- und "Reply-To"-Header
kombinieren.

http://www.gerlo.de/falsche-email-adressen.html

Quote:
Thomas 'PointedEars' Lahn schrieb:
Gern geschehen. Die Ursache für das Versagen war bei mir
glücklicherweise
auch nur eine Race Condition (Zielframe war noch nicht fertig geladen).
Brrr. Bitte vor dem Posten nochmal korrekturlesen. Thunderbird hat auch
unter Edit, Rewrap eine nette Funktion, die man sich in die Toolbar legen kann.

Quote:
Lässt sich das eigentlich vernünftig abfangen? Ich
habe mir bisher mit setTimeout() beholfen, aber so
ganz glücklich ist das nicht.
Da Du nie weisst, welcher Frame zuerst geladen wird, ist window.setTimeout()
hier IMHO die beste Lösung. Es ist vermutlich sinnvoll, die "Warteschleife"
gar nicht erst zu beginnen, wenn window == window.top ist.


PointedEars
--
CSS ist keine Darstellungsvorschrift, sondern ein Darstellungsvorschlag
mit eingebautem "Ich weiß es aber besser"-Recht auf Seiten des userAgent.

(Georg Maaß in dcljs <amuna7$9fbuu$1 (AT) ID-3551 (DOT) news.dfncis.de>)


Reply With Quote
  #7  
Old   
Thomas Bandt
 
Posts: n/a

Default Re: Probleme mit top.frames[''] in Safari 3.0.4 - 03-18-2008 , 02:41 AM



Thomas 'PointedEars' Lahn schrieb:
Quote:
Da Du nie weisst, welcher Frame zuerst geladen wird, ist window.setTimeout()
hier IMHO die beste Lösung. Es ist vermutlich sinnvoll, die "Warteschleife"
gar nicht erst zu beginnen, wenn window == window.top ist.
Ok.

--
Gruß, Thomas [MVP ASP/ASP.NET]
http://www.69grad.de - Beratung, Entwicklung
http://www.dotnetjob.de - .NET-Stellenbörse
https://www.xing.com/net/asp.net/ - ASP.NET bei XING
http://blog.thomasbandt.de - Thomas goes .NET


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.