JS问题(window对象)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS问题(window对象)相关的知识,希望对你有一定的参考价值。

location.href属性包含的URL与document.URL属性相同,但document.URL的属性只能返回不能修改,儿location.href的属性是可以更改的,因此可以使用loction.href来打开新页面。
这句话怎么理解呢?

下面是我的理解,location是地址对象,因此location.href指的就是域名
例如:http://www.baidu.com
而document是文档对象,因此document.URL指的就是文档的路径
例如:ABCD.html存在与桌面上,document.URL就是C:\Documents and Settings\Administrator\桌面
而书上说,location.href属性包含的URL与document.URL属性相同,这句话怎么理解啊 按照我的理解 好像不是那样子的啊 还有就是 document.URL的属性只能返回不能修改,而location.href的属性是可以修改的,因此可以使用location.href来打开新页面 这又是怎么回事啊?

+++++++++++++++ 一定要弄个例子啊 +++++++++++++++++JS例子:
<html>
<head>
<title>
</title>
<script language="java/language">

//解释代码
</script>
</head>
</html>

麻烦高人给我这个菜鸟指点指点,回答让我明白了,我高分悬赏!!谢谢了

首先声明,我不怎么懂JS语言,帮你在网上找了点,你看看,或许有帮助。

对 document.URL 与 location.href 区别的质疑

有文说 document.URL 与 location.href 二者有两点区别:

一、重定向服务器重定向后有可能使 document.URL 变动,但 location.href 指的永远是访问该网页时用的 URL。
二、读写问题,document.URL 只读,location.href 可写。

而我测试后结果并不是这样的。

第一个区别测试:
一个页面 A,访问页面 A 利用 Response.Redirect(客户端重定向)重定向到页面 C。
一个页面 B,访问页面 B 利用 Server.Transfer (服务器端重定向)重定向到页面 C。
页面 C 代码如下:
alert("document.URL=" + document.URL + "\r\n" +
"location.href=" + location.href);
访问页面 A 时,得到的结果都是 C 的 URL;访问页面 B 时,得到的结果都是 B 的 URL。也就是说 document.URL 和 location.href 在此点上无区别。

第二个区别测试:
document.URL = "D.htm";
上述代码仍将页面带到了 D.htm,说明 document.URL 并不是只读的。

总结
二者在上述两个问题上无实质性区别。

参考资料:http://www.cftea.com/c/2008/06/AHJU873HPQSNPGPX.asp

参考技术A 引用w3c规范的说明:
document.URL:
URL of type DOMString, readonly The absolute URI [IETF RFC 2396] of the document.
http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/DOM2-HTML.html#html-ID-46183437

location.href:
The value of the href attribute MUST be the absolute URI reference [RFC2396]
use newer URI RFC?
that is the Location's current location. When the href attribute is set, the Location's window MUST navigate to the newly set value.
Must define the term navigate
http://www.w3.org/TR/Window/
从文档描述来看document.url和location.href确实是同样的功能。都是显示当前绝对路径。
但是document在标准中定义是只读的,因为IE不是遵循w3c标准的浏览器,所以没有严格遵守规则. 你可以用firefox试验一下,document.URL="xxx",肯定报readonly错误的.
参考技术B 给我

js中window对象的opener属性的一个坑

2018-05-08 17:48:33

今天我编写js代码时碰到了一个让我纠结了很久的小问题,在此记录一下当做笔记,

这个问题就是:在我自己写的子窗口中用opener属性却获取不到父窗口的window对象。

现在已经解决这个问题,请看下文


 

这是父窗口(windows.html)的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
  <input type="button" value="打开子窗口" onclick="show()" /><br/>
</body>
<script type="text/javascript" >
  function show(){
    window.open("user.html","","height=300,width=400","");
  }
</script>
</html>


 

这是子窗口(user.html)的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
  <input type="button" value="弹出来" onclick="run()" /><br/>
</body>
<script type="text/javascript" >
  function run(){
    window.opener.alert("弹弹弹");
  }
</script>
</html>


 

不出意外的话,点击一下父窗口的button,会弹出子窗口,

然后再点击子窗口是button,父窗口中会出现一个弹窗(弹窗上写着弹弹弹三个字);

然而却父窗口却没有弹窗弹出来,接下来我在子窗口按f12看调试的时候,有错误说我没有获取到父窗口的引用。。。

纠结了好久之后,我换了另外一个浏览器火狐,然后成功了。

解决这个问题的方法就是,不能用Chrome这个浏览器来运行这段代码(并非黑Chrome),至于原因我也不太清楚。。。。先不管这个了

 

以上是关于JS问题(window对象)的主要内容,如果未能解决你的问题,请参考以下文章

为啥js的手册里没有window document等对象的资料?

js的windoe对象和Object对象的关系,Object属于window对象的属性吗(对象属性

js中window对象和document对象的区别

JS三大核心,window对象的核心方法

JS的Window对象

JS的window对象和document对象