当前位置:   article > 正文

《js》iframe之间跨域交互_js iframe跨域

js iframe跨域

1. 父页面调用子页面

  直接通过iframe的url?param=abc 方式, 把值传到子页面.

https://www.cnblogs.com/sydeveloper/p/3712863.html

2. 子页面调用父页面

通过parent

html iframe 子页面调用父页面的方法_iframe子页面调用父页面函数_优雅码农的博客-CSDN博客

3. window.postMessage()

该window.postMessage()方法安全地启用Window对象之间的跨源通信;例如,在页面和它产生的弹出窗口之间,或者在页面和嵌入其中的iframe之间。 

通常,当且仅当它们源自的页面共享相同的协议、端口号和主机(也称为“同源策略”)时,允许不同页面上的脚本相互访问。window.postMessage()提供一种受控制的机制来安全地规避这种限制(如果使用得当)。

接收消息

  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>接收消息</title>
  6. </head>
  7. <script>
  8. window.onload = function() {
  9. var messageEle = document.getElementById('message');
  10. window.addEventListener('message', function (e) {
  11. if (e.origin !== "http://localhost:8080") {
  12. return;
  13. }
  14. messageEle.innerHTML = "从"+ e.origin +"收到消息: " + e.data;
  15. });
  16. }
  17. </script>
  18. <body>
  19. <div id="message">
  20. 等待接收消息!
  21. </div>
  22. </body>
  23. </html>

发送消息

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>给iframe发送消息</title>
  6. <script>
  7. window.onload = function() {
  8. var receiver = document.getElementById('receiverIframe').contentWindow;
  9. var btn = document.getElementById('send');
  10. btn.addEventListener('click',
  11. function(e) {
  12. e.preventDefault();
  13. var val = document.getElementById('text').value;
  14. receiver.postMessage("Hello " + val + "!","http://localhost:8080");
  15. });
  16. }
  17. </script>
  18. </head>
  19. <body>
  20. <div>
  21. <input id="text" type="text" value="你好吗?" />
  22. <button id="send">发送消息</button>
  23. </div>
  24. <iframe id="receiverIframe" src="http://localhost:8080/receiver" width="500" height="60">
  25. <p>你的浏览器不支持IFrame。</p>
  26. </iframe>
  27. </body>
  28. </html>

替换iframe :

jQuery的load()函数
AJAX
<object>标签
<embed>标签
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/997573
推荐阅读
相关标签
  

闽ICP备14008679号