什么是跨域调用?

当两个页面端口不同或者协议不同,或者ip地址不同的时候,如果想在这个页面调用另外一个页面中的方法,就叫做跨域调用

父页面调用子页面

通过iframe实现跨域请求
www.a.com
       www.b.com

想在a中调用b中的方法,因为a和b是不同域的,不能直接调用,但是如果有一个中间页,这个页面和b是同源的,在页面初始化的时候就帮忙调用b中的方法
然后我们再在a中初始化这个页面,这不就实现了跨域请求吗

那么结构将变成

www.a.html
       www.b.com
              www.b.com/f.html

f页面中直接在页面加载完成就调用b中的方法

然后我们只需要在a中想要调用b中方法的时候,动态生成一个iframe,嵌入ww.b.com/f.html,当生成完成的时候,它就能自动调用b中的方法

子页面调用父页面

同样的,如果是子请求父页面

那么只需要将结构变成

www.a.html
       www.b.html
              www.a.html/f.html

f初始化的时候,自动调用a中的方法
我们在b中想要调用a中方法时候,只需要动态生成一个iframe,www.a.html/f.html,这不就实现了在b中调用a中的方法吗?

当需要调用的方法不止一个的时候应该如何处理?

在a中调用b中的方法,如果方法不止一个,那可能给他加很多个页面来处理吧?这时候,可以通过传递参数的形式,然后让js解析传递过来的参数,是什么参数,就在初始化的时候调用什么方法,你可以通过window.location.href获取到当前的url地址,然后再用解析字符串的方式来解析这个地址,例如你完全可以截取到?后端的部分,判断当前传递过来的是什么参数

//父调用子方法实例
<iframe id="frame" width="0px" height="0px"></iframe>
<script>//需要传递两个参数一个method=这里写方法名&url=这里写具体调用哪个页面的方法var url = window.location.href;var firstIndex = url.indexOf("?");var frame = document.getElementById("frame");   if(firstIndex != -1){var paramArray = url.substring(firstIndex+1,url.length).split("&");var _src = paramArray[1].split("=")[1];frame.src = _src;           var method = paramArray[0].split("=")[1];if(method){frame.contentWindow[method]();  //传什么方法就直接调用什么方法}}</script>
//在a中iframe这个页面,然后写上http:www.b.html/f.html?method=test&url=http://www.b.html

通过iframe中间页实现js跨域调用相关推荐

  1. 解决js跨域调用WebApi的问题

    解决js跨域调用WebApi的问题 参考文章: (1)解决js跨域调用WebApi的问题 (2)https://www.cnblogs.com/qubernet/p/6396295.html 备忘一下 ...

  2. js php调用webservice,js跨域调用WebService的使用方法

    这次给大家带来js跨域调用WebService的使用方法,js跨域调用WebService的注意事项有哪些,下面就是实战案例,一起来看一下. 步骤1. 在web.config中的system.web节 ...

  3. js跨域调用php接口,php的json格式和js跨域调用的代码

    function jsontest() { var json = [{'username':'crystal','userage':'20'},{'username':'candy','userage ...

  4. php 跨域 json,PHP json格式和js json格式 js跨域调用实现代码

    先看一个js函数 function jsontest() { var json = [{'username':'crystal','userage':'20'},{'username':'candy' ...

  5. vue 调用webservice_js跨域调用WebService的简单实例

    步骤1. 在web.config中的system.web节点里加入 步骤2.webservice代码 using System; using System.Collections.Generic; u ...

  6. 【转】JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  7. JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  8. iframe跨域调用js_郑州Web前端基础学习之JS跨域知识梳理

    JS是Web前端开发三要素之一,是郑州Web前端基础学习中非常重要的知识点.JS涉及的知识点多且杂,很多同学反映不知如何下手,事实上,只要你认真记.多练习,就可以慢慢掌握它.今天千锋郑州Web前端培训 ...

  9. window.opener方法的使用 js跨域

    2019独角兽企业重金招聘Python工程师标准>>> 最近公司网站登陆加入了第三方登陆.可以用QQ直接登陆到我们网站,在login页面A中点QQ登陆时,调用了一个window.op ...

最新文章

  1. 未捕获ReferenceError:未定义$?
  2. CentOS7下安装tomcat8
  3. 模电这么学,谁还会说不懂晶体管?
  4. 支配树(洛谷-P5180)
  5. 最长公共子序列算法 java_转【算法之动态规划(三)】动态规划算法之:最长公共子序列 最长公共子串(LCS)字符串相似度算法...
  6. vant修改用户头像
  7. 解决oppo r7splus刷机后基带丢失|串号丢失|无信号等问题方法
  8. HCIP 数通资料下载 肖哥视频
  9. java课程设计 博客园_201521123098 JAVA课程设计
  10. 使用Python实现微信发送文本消息、图片以及附件
  11. 高效缓冲区输入输出流
  12. C++17之省略不必要的拷贝Copy Elision
  13. Python处理PDF神器PyMuPDF的安装与使用
  14. e470换高分屏_DIY之Thinkpad E470升级记
  15. 飞机大战(C语言版)
  16. JavaWeb项目+MVC三层架构+Mysql+Tomcat+汽车配件销售系统前后端+可以用于学习javaweb项目入门
  17. java线程池的正确使用方式,completableFuture
  18. 【LEDE】x86软路由之路-04-哑巴?alsa了解一下?
  19. 单神经元PID控制+Simulink控制系统仿真
  20. 阿里云企业网站备案授权书详细情况汇总 帮助企业快速通过网站备案 满满干货

热门文章

  1. 传智播客php page类,传智播客详解PHP类和对象的其他相关技术
  2. 头条竞价php下单系统源码_php竞价页订单管理系统(caozha-order ) v1.7.7
  3. 如何下载津南区卫星地图高清版大图
  4. 聚福卡----不问破产,问啥时提车——消费者对通用破产事件反应平淡
  5. ubuntu20.04安装rxt3090驱动步骤和遇到的问题
  6. 百度持续交付新产品的改造之路
  7. NBIOT连接阿里云控制台(MQTT连接阿里云控制台)
  8. Python读写操作Excel数据详解
  9. android 三国杀 单机游戏,三国杀单机完整版
  10. 【硬件木马项目】第一篇:数据处理之Verilog HDL语言