浅析location.href跨窗口调用函数


Posted in Javascript onNovember 22, 2016

location.href这个东西常常用于跳转,location既是window对象的属性,又是document对象的属性。

JavaScript hash 属性 -- 返回URL中#符号后面的内容
JavaScript host 属性 -- 返回域名
JavaScript hostname 属性 -- 返回主域名
JavaScript href 属性 -- 返回当前文档的完整URL或设置当前文档的URL
JavaScript pathname 属性 -- 返回URL中域名后的部分
JavaScript port 属性 -- 返回URL中的端口
JavaScript protocol 属性 -- 返回URL中的协议
JavaScript search 属性 -- 返回URL中的查询字符串
JavaScript assign() 函数 -- 设置当前文档的URL
JavaScript replace() 函数 -- 设置当前文档的URL,并在history对象的地址列表中删除这个URL
JavaScript reload() 函数 -- 重新载入当前文档
JavaScript toString() 函数 -- 返回location对象href属性当前的值
有几种不同的调用方法,弄到自己有点乱,这次一次性写个实例,完完全全不再混淆。本次用3个页面解决问题:

3.html 本窗口:

<html>
<head>
<title>js</title>
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script type="text/javascript">
  $(function(){
    $("#parent").click(function(){
      parent.location.href = "https://3water.com/article/97882.htm";  //父亲Iframe被跳转
    })
    $("#top").click(function(){
      top.location.href = "https://3water.com/article/97882.htm";    //爷爷Iframe(最外层)被跳转
    })
    $("#self").click(function(){
      self.location.href = "https://3water.com/article/97882.htm";    //自己跳转
    })
    $("#parentparent").click(function(){
      parent.parent.location.href = "https://3water.com/article/97882.htm";  //爷爷IFrame跳转,可以获取到任意层级的父窗口
    })
  })

  function ParentRun()
  {
    alert("儿子IFrame方法!");
  }
</script>
</head>
<body>
我是儿子!
<input type="button" id="parent" value="parent.location.href" />
<input type="button" id="top" value="top.location.href" />
<input type="button" id="self" value="self.location.href" />
<input type="button" id="parentparent" value="parentparent.location.href" />
</body>
</html>

2.html 父窗口:

<html>
<head>
<title>js??</title>
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script type="text/javascript">
  $(function(){
    $("#Outermost").click(function(){
      //判断当前IFrame是否是最外层页面
      if (top.location == self.location) {
        alert("本Iframe是最外层框架");
      }
      else{
        alert("本Iframe不是最外层框架");  //这个被弹出
      }
    })

    $("#Son").click(function(){
      //window.frames[0].location = "https://3water.com/article/97882.htm";
      window.frames["Son"].location = "https://3water.com/article/97882.htm";
    })

    $("#SonFunction").click(function(){
      window.frames["Son"].ParentRun();  //IE支持,google发布后)支持(文件系统中不支持)
    })

    $("#ParentFunction").click(function(){
      parent.SonRun();  //IE支持,google发布后支持(文件系统中不支持)
    })
  })
</script>
</head>
<body>
我是父亲!
<iframe src="3.html" name="Son" style="width:300px; height:300px;" ></iframe>
<input type="button" id="Outermost" value="判断当前IFrame是否最外层" />
<input type="button" id="Son" value="控制儿子IFrame跳转" />
<input type="button" id="SonFunction" value="调用子窗口函数">
<input type="button" id="ParentFunction" value="调用父窗口函数">
</body>
</html>

1.html 爷窗口:

<html>
<head>
<title>js</title>
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script type="text/javascript">
  $(function(){
    alert(window.location == document.location);  //输出 true
  })

  function SonRun()
  {
    alert("爷爷IFrame方法!");
  }
  
  //http://localhost:666/1.html?id=1&name=%E5%BC%A0%E4%B8%89#menu
  document.write(location.hash + "<br/>");    //  #menu
  document.write(location.host + "<br/>");    //  localhost:666
  document.write(location.hostname + "<br/>");  //  localhost
  document.write(location.pathname + "<br/>");  //  /1.html
  document.write(location.port + "<br/>");    // 666
  document.write(location.protocol + "<br/>");  // http:
  document.write(location.search + "<br/>");    // ?id=1&name=%E5%BC%A0%E4%B8%89
  document.write(location.assign + "<br/>");    // function () { [native code] }
</script>
</head>
<body>
我是最爷爷(最外层)!
<iframe src="2.html" style="width:500px; height:500px;" ></iframe>
</body>
</html>

三个页面放在同一个目录,随便点下就知道怎么回事了!

jQuery对IFrame的操作主要是通过

$("iframe").contents().find("#id1");

进行跨IFrame操作。

以上就是本文的全部内容,希望对大家有所帮助,谢谢对三水点靠木的支持!

Javascript 相关文章推荐
Javascript 获取链接(url)参数的方法
Feb 15 Javascript
写出更好的JavaScript之undefined篇(上)
Nov 22 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
Jul 03 Javascript
JSON中双引号的轮回使用过程中一定要小心
Mar 05 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
May 08 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
Oct 17 Javascript
基于javascript实现随机颜色变化效果
Jan 14 Javascript
AngularJS 视图详解及示例代码
Aug 17 Javascript
js获取隐藏元素的宽高
Feb 24 Javascript
JS交互点击WKWebView中的图片实现预览效果
Jan 05 Javascript
vue.draggable实现表格拖拽排序效果
Dec 01 Javascript
vue切换菜单取消未完成接口请求的案例
Nov 13 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
Nov 22 #Javascript
AngularJS全局scope与Isolate scope通信用法示例
Nov 22 #Javascript
基于js实现checkbox批量选中操作
Nov 22 #Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 #Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
Nov 22 #Javascript
详解Js模板引擎(TrimPath)
Nov 22 #Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
Nov 22 #Javascript
You might like
PHP的面向对象编程
2006/10/09 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
jquery html动态生成select标签出问题的解决方法
2013/11/20 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
css与javascript跨浏览器兼容性总结
2014/09/15 Javascript
jquery实现的V字形显示效果代码
2015/10/27 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
antd Upload 文件上传的示例代码
2018/12/14 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
详解python3中socket套接字的编码问题解决
2017/07/01 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
python字典的常用方法总结
2019/07/31 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
python如何实时获取tcpdump输出
2020/09/16 Python
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
经典c++面试题三
2015/07/08 面试题
高中自我评价范文
2014/01/27 职场文书
八一演出活动方案
2014/02/03 职场文书
《长相思》听课反思
2014/04/10 职场文书
活动总结怎么写
2014/04/28 职场文书
复兴之路展览观后感
2015/06/02 职场文书
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python