热门IT资讯网

Window对象

发表于:2024-11-26 作者:热门IT资讯网编辑
编辑最后更新 2024年11月26日,setTimeout()、clearTimeout:用于设置,取消单次执行指定操作的函数;setInterval(),clearInterval():用于设置、取消每隔指定时间执行指定操作的函数。Wi
  1. setTimeout()、clearTimeout:用于设置,取消单次执行指定操作的函数;setInterval(),clearInterval():用于设置、取消每隔指定时间执行指定操作的函数。

  2. Window对象的location属性引用的是Location对象,它表示该窗口中当前显示的文档的url,并定义了方法用来使窗口载入新的文档, _window.location===_document.location,总是返回true

  3. 解析URLLocation对像的href属性是一个字符串,它包含Url的完整文本。Location对象的toString()方法返回href属性的值,因此在隐式调用toString()的情况下,可以使用location代替location.href。这个对象的protocolhosthostnamepathnamesearch,分别表示URL的各个部分。他们成为"URL分解属性。hash属性返回URL中的"片段标识符"部分。search属性页类似,它返回的是问号之后的url,这部分通常用是某种类型的查询字符串。一般来说,这部分内容是用来参数url并在其中嵌入参数的。虽然这些参数通常用于运行在服务器上的脚本,但在启用javascript的页面中当然也可以使用它们。

#的含义#代表网页中的一个位置。其右面的字符,就是该位置的标识符。比如,

http://www.example.com/index.html#print

就代表网页index.htmlprint位置。浏览器读取这个URL后,会自动将print位置滚动至可视区域。

为网页位置指定标识符,有两个方法。一是使用锚点,比如,二是使用id属性,比如

http请求不包括#:,#只是用来指导浏览器动作的,对服务器完全无用,索引http请求不包括#比如,访问下面的网址,

http://www.example.com/index.html#print

浏览器实际发出的请求是这样的:

GET /index.htmlHTTP/1.1

Host:www.example.com

可以看到,只是请求index.html,根本没有"#print"的部分。

如果只改变#后面的内容,浏览器不会触发页面重载,但会改变浏览器的访问历史

每一次改变#后的部分,都会在浏览器的访问历史中增加一个记录,使用"后退"按钮,就可以回到上一个位置。

这对于ajax应用程序特别有用,可以用不同的#值,表示不同的访问状态,然后向用户给出可以访问某个状态的链接。

值得注意的是,上述规则对IE 6IE 7不成立,它们不会因为#的改变而增加历史记录。

_window.location.hash这个属性可读可写。读取时,可以用来判断网页状态是否改变;写入时,则会在不重载网页的前提下,创造一条访问历史记录。

eg:以http://www.qdweb.com/templete/baidujs.html?id=2#s=1为例

console.log(location.href);

console.log(location.toString());

console.log(location.protocol);

console.log(location.host);

console.log(location.hostname);

console.log(location.pathname);

console.log(location.search);

console.log(location.hash);

输出结果为:

http://www.qdweb.com/templete/baidujs.html?id=2#s=1qwzn1.js:113

http://www.qdweb.com/templete/baidujs.html?id=2#s=1qwzn1.js:114

http: qwzn1.js:115

www.qdweb.com qwzn1.js:116

www.qdweb.com qwzn1.js:117

/templete/baidujs.html qwzn1.js:118

?id=2 qwzn1.js:119

#s=1

url路径进行解析的函数

/**

* 将路径解析为键值对

* @return {[对象]} [返回解析后的键值对对象]

*/

function urlArgs(){

var args={};

varquery=location.search.substring(1);

varpairs=query.split("&");

for (var i = 0; i

varpos=pairs[i].indexOf('=');

if(pos==-1){

continue;

}

varname=pairs[i].substring(0,pos);

varvalue=pairs[i].substring(pos+1);

value=decodeURIComponent(value);//value值进行解析

args[name]=value;

};

return args;

}

Location对象的assign()方法可以使窗口载入并显示你指定的URL中的文档。replace()方法也类似,但它在载入新文档之前会从浏览历史中把当前文档删除。如果脚本无条件地载入一个新文档,replace()方法可能是比assign()方法更好的选择。否则,"后退"按钮会把浏览器带回到原始文档,而相同的脚本则会再次载入新文档。

此外还有reload()方法,使浏览器重新载入当前文档。

4.浏览历史:History对象用来把窗口的浏览历史和文档状态列表的形式表示。History对象的length属性表示浏览历史列表中的元素数量,但出于安全因素,脚本不能访问已保存的URL

History对象的back()和forward()方法与浏览器的"后退"和"前进"按钮一样:他们使浏览器在浏览历史中前后跳转一格。

go()方法接受一个整数参数,可以再历史列表中向前(正整数--或向后(负整数)跳过任意多个页。

如果窗口包含多个子窗口(比如