Ich habe eine Anwendung entwickelt, die eine Liste von Elementen in einem Rahmen enthält; wenn man auf ein Element klickt, wird etwas in einem anderen Rahmen getan (ein Bild geladen).
Früher funktionierte das in allen Browsern, auch in Chrome 3; jetzt funktioniert es noch in Firefox, aber in neueren Versionen von Chrome (ich glaube seit 4) tritt dieser Fehler auf:
Unsicherer JavaScript-Zugriffsversuch auf Frame mit URL (...) von Frame mit URL (...). Domains, Protokolle und Ports müssen übereinstimmen.
Dies ist offensichtlich ein Sicherheitsmerkmal", aber ist es möglich, es zu umgehen?
Hier ist ein einfacher Test:
index.html:
<html>
<frameset cols="50%,50%">
<frame src="left.html" name="left"/>
<frame src="right.html" name="right"/>
</frameset>
</html>
links.html:
<html>
<body>
<a href="javascript:parent.right.test('hello');">click me</a>
</body>
</html>
rechts.html:
<html>
<body>
<script>
function test(msg) {
alert(msg);
}
</script>
</body>
</html>
Das oben genannte funktioniert in Firefox 3.6 und Chrome 3, aber in Chrome 5 wirft es den oben genannten Fehler...
Edit :
- Hinzufügen des Attributs @cols zum Frameset-Element
- in der Tat funktioniert es in Chrome, wenn und nur wenn die Seiten mit dem http-Protokoll (und von der gleichen Domain) serviert werden, aber mein Problem ist, wenn die Seiten lokal sind und von einem file:// Protokoll geliefert werden . Dann funktioniert es in Firefox (alle Versionen) und Chrome 3, aber nicht in Chrome 5 (ich habe Chrome 4 nicht, also bin ich mir nicht sicher, was diese spezielle Version angeht (und weiß nicht, ob es überhaupt möglich ist, eine spezielle Chrome-Version herunterzuladen) - aber bei Chrome 5 bin ich mir sehr sicher, dass es nicht funktioniert).