Opera Problem
smallfish
- javascript
Folgender Code funktioniert in IE und FF, aber nicht in Opera:
<script type="text/javascript">
var twice = document.referrer.search(/?cmpid=meinedomain/);
if (twice == -1) {
window.opener.location.href=document.referrer + "?cmpid=meinedomain";
}
function byby() {
window.open('','_self');
window.close();
}
document.onclick=byby
</script>
Der Code steht in einer Seite, die von einer Kundenseite (auf die ich keinen Zugriff habe) per href _blank geöffnet wurde. Ziel ist es,
Wie gesagt: Keine Probleme in IE und FF, aber in Opera (9.x) tut sich nichts. Hat jemand eine Idee, warum?
Grüße,
ich hätte angst in die fehlerkonsole zu schauen - mach doch dragonfly auf und schau was es sagt ;)
MFG
bleicher
Wie gesagt: Keine Probleme in IE und FF, aber in Opera (9.x) tut sich nichts. Hat jemand eine Idee, warum?
auch Opera hat eine Fehlerkonsole, sie ist aber etwas versteckter, als im Firefox (da ich gerade keinen zur Hand habe, kann ich dir aber auch nicht sagen wo du sie genau findest), sollte dir aber bei deinem Problem weiterhelfen.
Struppi.
Grüße
auch Opera hat eine Fehlerkonsole, sie ist aber etwas versteckter,
tools->advanced->error console
MFG
bleicher
Vielen Dank für die Hinweise, hier ist die Meldung von Dragonfly:
Error:
name: TypeError
message: Statement on line 4: Cannot convert undefined or null to Object
Backtrace:
Line 4 of inline#1 script in http://xxxx.html
window.opener.location.href=document.referrer + "?cmpid=meinedomain";
stacktrace: n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'
Was meint er jetzt damit? Was ist undefined or null?
Line 4 of inline#1 script in http://xxxx.html
window.opener.location.href=document.referrer + "?cmpid=meinedomain";
Was ist undefined or null?
window.opener oder
window.opener.location oder
window.opener.location.href oder
document.referrer
Es liegt an dir, mit Debug-Ausgaben herauszufinden, welches undefined ergibt (ich vermute window.opener - vielleicht wegen einer Same-Origin-Policy).
Mathias
»» Line 4 of inline#1 script in http://xxxx.html
»» window.opener.location.href=document.referrer + "?cmpid=meinedomain";
»» Was ist undefined or null?window.opener oder
window.opener.location oder
window.opener.location.href oder
document.referrerEs liegt an dir, mit Debug-Ausgaben herauszufinden, welches undefined ergibt (ich vermute window.opener - vielleicht wegen einer Same-Origin-Policy).
Mathias
Offensichtlich funktioniert window.opener.location.href= zwischen verschiedenen Domains nicht. Aber warum nur in Opera? Und gibt es einen Workaround?
Offensichtlich funktioniert window.opener.location.href= zwischen verschiedenen Domains nicht. Aber warum nur in Opera? Und gibt es einen Workaround?
Tja, gute Frage. Ehrlich gesagt wundere ich mich darüber, dass die restlichen Browser hier keine Verletzung der Same-Origin-Policy sehen - denn es ist meinem Verständnis nach eine. Bei Frames kenne ich ebenfalls dieses Verhalten, da kann man m.W. auch nicht die URI des Framesets bzw. des Dokuments lesen, dass das gegenwärtige Dokument cross-domain einbindet.
Ich werde der Sache in den nächsten Tagen mal näher auf den Grund gehen, diese Uneinheitlichkeit verstehe ich selbst nicht und interessiert mich sehr.
Vielleicht hat solange jemand anderes eine Idee? (Habe mal den Titel angepasst, um Aufmerksamkeit zu lenken. ;-))
Mathias
Hi,
Offensichtlich funktioniert window.opener.location.href= zwischen verschiedenen Domains nicht. Aber warum nur in Opera? Und gibt es einen Workaround?
Tja, gute Frage. Ehrlich gesagt wundere ich mich darüber, dass die restlichen Browser hier keine Verletzung der Same-Origin-Policy sehen - denn es ist meinem Verständnis nach eine. Bei Frames kenne ich ebenfalls dieses Verhalten, da kann man m.W. auch nicht die URI des Framesets bzw. des Dokuments lesen, dass das gegenwärtige Dokument cross-domain einbindet.
Den aktuellen Inhalt Auslesen ist was anderes, als eine neue Location zuweisen (und letzteres ist hier ja der konkrete Fall, bei dem der Fehler auftritt) - das Auslesen könnte meine Privatsphäre betreffen; aber wenn du mich durch Zuweisung eines neuen Wertes in die Wüste oder sonstwohin schickst, ist das zumindest hinsichtlich meiner Daten kein Problem.
Möglich, dass die anderen Browser hier feiner differenzieren, und den Wechsel auf eine neue Adresse als unproblematisch durchgehen lassen.
MfG ChrisB
Den aktuellen Inhalt Auslesen ist was anderes, als eine neue Location zuweisen (und letzteres ist hier ja der konkrete Fall, bei dem der Fehler auftritt) - das Auslesen könnte meine Privatsphäre betreffen
Ja, stimmt, danke für den Hinweis. Sonst würde es z.B. nicht möglich sein, aus einem Frameset auszubrechen. Auch da hat Opera schon immer gezickt und eine sehr harsche SOP angewendet. Deshalb waren solche Hacks nötig:
http://de.selfhtml.org/javascript/beispiele/seitenanzeige.htm
Vielleicht ist etwas ähnliches bei Popups möglich (hmm, gibts target="_opener" ? Wenn nicht, könnte man dem Ausgangsfenster vielleicht einfach einen Namen zuweisen).
Mathias