Śledziłem ten poradnik http://davidwalsh.name/window-postmessage i stworzył skrypty wiadomości domen krzyż, który działa w Chrome i Firefox, ale nie w IE 10. Czy ktoś może dać mi jakieś przeboje na jak zmodyfikować go dla IE 8+?postMessage między oknami między domenami nie pracuje w IE10 (działa na ramkach)
Na jednym serwerze (np: 192.168.15.223) - odbiornik
<script>
//listener
window.addEventListener('message',function(event) {
if(event.origin !== 'http://120.0.0.211') return;
document.getElementById('cc').innerHTML = event.data;
},false);
window.attachEvent('onmessage',function(event) {
if(event.origin !== 'http://120.0.0.211') return;
document.getElementById('cc').innerHTML = event.data;
},false);
</script>
<p>At 192.18.15.223 server</p>
<div id='cc'>Nothing received yet</div>
Na innym serwerze (np: 120.0.0.211) - nadawcy
<script>
//create popup window
var domain = 'http://192.18.15.223';
var myPopup = window.open(domain + '/receiver','myWindow','width=400,height=200');
//message sender
function popup(){
var message = 'A message sent from 120.0.0.211:';
myPopup.postMessage(message,domain); //send the message and target URI
}
</script>
<div id="bb">At 120.0.0.211 server</div>
<button type="button" onclick="popup()">send the message!</button>
Przede skryptów działa idealnie w Chrome i Firefox, pojawia się okno i można odebrać wiadomość, jednak w IE (8+) pojawia się tylko okno, ale wiadomość nie jest odbierana (lub może nie być wysyłana).
Moim głównym celem jest uczynienie dwie domeny wysyłać i odbierać proste dane (teksty, zdjęcia pojedyncze itp), a nie w tym zbyt dużo zmian na backend. Więc usługa sieciowa nie jest brana pod uwagę.
Każda pomoc będzie doceniona!
Oto kilka linków, które mogą pomóc w zbadaniu problemów.
Ten post suggess korzystając attachEvent na IE, które już miało miejsce w kodach powyżej: addEventListener in Internet Explorer
Ten dokument pokazuje Microsoft oficjalnie IE 8+ powinny wspierać addEventListener: http://msdn.microsoft.com/en-us/library/ie/cc197057(v=vs.85).aspx
to zalecane przy użyciu jQuery bind() aby zastąpić addEventListener: jQuery equivalent of JavaScript's addEventListener method
Czy upewniłeś się, że twoja strona działa w trybie standardów IE8 (hit F12 i sprawdź na pasku narzędzi)? Czy włączyłeś debuggera skryptu, dodasz punkt przerwania i przejdziesz przez skrypt w debugerze? – EricLaw
Tak, przetestowałem go w IE8,9 i 10.W IE9,10 brak komunikatów o błędach, jednak w IE 8 pokazuje: SCRIPT16386: Żaden taki interfejs nie jest obsługiwany dla linii "myPopup.postMessage (message, domain);". – KingBowen
Znalazłem ten link, który udowodnił, że IE może tylko wysyłać wiadomość do osadzonych ramek, a nie między oknami. http://blogs.msdn.com/b/thebeebs/archive/2011/12/21/postmessage-popups-and-ie.aspx – KingBowen