浅析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 相关文章推荐
js类中的公有变量和私有变量
Jul 24 Javascript
Javascript 检测、添加、移除样式(className)函数代码
Sep 08 Javascript
JS window.opener返回父页面的应用
Oct 24 Javascript
js异常捕获方法介绍
Apr 10 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
Apr 25 Javascript
JS简单实现元素复制示例附图
Nov 19 Javascript
jQuery中map()方法用法实例
Jan 06 Javascript
AngularJS在IE8的不支持的解决方法
May 13 Javascript
Vue组件BootPage实现简单的分页功能
Sep 12 Javascript
vue2 全局变量的设置方法
Mar 09 Javascript
JavaScript复制变量三种方法实例详解
Jan 09 Javascript
如何实现iframe父子传参通信
Feb 05 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中OR与|| AND与&amp;&amp;的区别总结
2013/10/26 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
ext实现完整的登录代码
2008/08/08 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
js淡入淡出的图片轮播效果代码分享
2015/08/24 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
使用JavaScript解决网页图片拉伸问题(推荐)
2016/11/25 Javascript
Angular4学习教程之DOM属性绑定详解
2018/01/04 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
在Python中使用第三方模块的教程
2015/04/27 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
详解Python中的动态属性和特性
2018/04/07 Python
python实现文本界面网络聊天室
2018/12/12 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
2020/05/23 Python
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
盛大二次面试题
2016/11/18 面试题
司机的工作范围及职责
2013/11/13 职场文书
中标通知书
2015/04/17 职场文书
2015年治庸问责工作总结
2015/07/27 职场文书