Как использовать функцию postMessage?

Я переслал файл в сервер hostinger со следующим кодом:

<body bgcolor="black"></body>
<script>
  onmousedown = function(e) {
    window.postMessage(prompt("Enter your message"),location.href)
  }
  window.onpostmessage = function(e) {
    if(e.origin==location.href) {
      alert(e.data)
    }
  }
</script>

Но проблема состоит в том, что, когда я нажимаю на мышь и пишу сообщение, страница не посылает мне бдительность говоря мне "e.data".

Что я должен делать, чтобы улучшать файл для того, чтобы он послал мне бдительность правильно в каждом окне, у которого должен будет быть эта унифицированный указатель ресурса?

1
задан 29.05.2017, 17:14
2 ответа

Тестирует это (try this)

<body bgcolor="black"></body>
<script>
  onmousedown=function(e){
    window.postMessage(prompt("Enter your message"),location.href)
  }
  window.onmessage=function(e){
    if(e.origin==location.href){
      alert(e.data)
    }else{
      alert(e.origin+'!='+location.href)
    }
  }
</script>

Правильностей

  • onmessage vs onpostmessage
  • else-> alert(e.origin+'!='+location.href)
1
ответ дан 24.11.2019, 13:14
  • 1
    That code sends я an alert when I удар в лунку в message, but if I open two windows in my computer, it doesn и # 39; t send я two alerts. I need to send в message to all window in my hostinger server, but thanks for your helping. – DrCristianstein 04.10.2016, 21:25
  • 2
    The postMessage function is for общайся between iframes in the same document: otherIframe.postMessage(...). If you want to сообщи тебе, что between tabs without using в backend you хан использовал Веб workers . If you want to сообщи тебе, что путь в back-end you хан использовал ajax – Emilio Platzer 04.10.2016, 22:08
  • 3
    How хан I download в webworker? And, how хан I использовал it? – DrCristianstein 06.10.2016, 22:53
  • 4
    Хороший explicaci и # 243; n возможно находить ac и # 225;: html5rocks.com/es/tutorials/workers/basics – Emilio Platzer 07.10.2016, 00:28
  • 5
    Он дает мне ошибку: " BlobBuilder is not defined. и quot; – DrCristianstein 07.10.2016, 22:58

Пара вещей:

  1. Он старается не помещать scripts вне body (технически это не действительный HTML).
  2. Не существует событие postmessage событие message.

Твой код был бы:

<body>
    <script>
    window.onmessage = function(e) {
      console.log(e.origin, e.data, location.href);
      if(e.origin === window.location.href) {
        alert(e.data);
      }
    }
    window.onmousedown = function() {
      window.postMessage(
        prompt("Enter your message"),
        window.location.href
      )
    }
    </script>
</body>
1
ответ дан 24.11.2019, 13:14
  • 1
    env и # 237; в сообщение, но потом он это не получает. This code sends the message, but after that, the html page doesn и # 39; t send я an alert. – DrCristianstein 04.10.2016, 21:26
  • 2
    Пашите you running this in iframe/object?. If the alert is not fired it means the window.location.href doesn и # 39; t матч. Try this code on JSBin and see the behaviour. – gugadev 04.10.2016, 21:29
  • 3
    The code doesn и # 39; t work in jsbin, it doesn и # 39; t send я any alert... – DrCristianstein 05.10.2016, 22:45