`

javascript之location,history用法

阅读更多
一、Location对象的使用简介location对象: 

location提供了关于当前打开窗口或者特定框架的url信息。一个多框架的窗口对象在location属性显示的是父窗口的URL,每个框架也有一个与之相伴的location对象。 

hash属性:hash标注是一个url很好的习惯用法,它指定浏览器到一个位于文档中的anchor位置,相当于一个书签儿。 

host属性:描述渔歌url的主机名和端口,只有端口号是url的一个明确部分时,值中才包括端口号。 

hostname属性:一个典型的url的主机名是网络上服务器的名字,该网络存储有你的浏览器上可以查看的文档。对大多数Web站点来说,服务器名不仅包括域名,也包括www前缀,如果端口号是在url中特有的话,主机名并不包括,而是包括在host属性中。 

href属性:该属性提供一个指定窗口对象的整个url的字符串。 

pathname属性:url的路径名部分由与服务器root(根)卷相关的目录结构组成。根不是目录的一部分,如果url的路径是通向根目录中的一个文件,那么location.pathname属性就是(/)。 

port属性:端口号很少用到。当指向一个没有赋给域名的的站点的url中,可以用location.port属性获取该值,如果从一个url获取值并想用那个组建创建一个url,一定要包括服务器IP地址和段口号,IP地址和段口号之间用(:)分界。 

protocol属性:包括协议名,且后面紧跟着(:)分节目。 

assign方法:assign("url")通过这个方法可以实现把一个新的url赋给location对象。当然你也可以采用直接赋值的方法来实现,或者location.href来导航到一个新的网页。采用assign的方法会使代码易维护。 

reload方法:这个方法可以把浏览器可能保存在内存中的元素(在一段记录中)的文档设置全部忽略掉,重新打开该文档,和浏览器上的刷新可不一样。它的效果好像是你选择了file菜单open file一样。当然如果你不想这样,不想这么做,有一个和这个方法比较类似的方法,就是history.go()方法。 

replace方法:当用户从当前网页,跳转到别的网页,有时候是不是想让不能用后退按钮(Back)看到前一个网页,告诉你一个方法,就是采用 location.replace("url")就可以实现这个功能。 

二、History对象的使用简介 
javascript 的history对象 
history.back() 等同于按浏览器的后退按钮 
history.forward() 等同于按浏览器的前进按钮 
history.current 指当前的url(等同于location.href), 
在历史中的索引位置总为 0 
history.go(-2)或 history.go("任意.html") 向前或向后移动, 
或查找字符串标明的最新url 

三、Window.Open详解 
1、基本语法:Js代码  
window.open(pageURL,name,parameters)  

window.open(pageURL,name,parameters)其中: 
pageURL 为子窗口路径  
name 为子窗口句柄  
parameters 为窗口参数(各参数用逗号分隔) 2、示例: 
Js代码  
     
<!--     
window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')     
//写成一行     
-->     
  
<!--  
window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')  
//写成一行  
-->  
脚本运行后,page.html将在新窗体newwindow中打开,宽为100,高为400,距屏顶0象素,屏左0象素,无工具条,无菜单条,无滚动条,不可调整大小,无地址栏,无状态栏。请对照。 
上例中涉及的为常用的几个参数,除此以外还有很多其他参数,请见3。 

2、各项参数 
其中yes/no也可使用1/0;pixel value为具体的数值,单位象素。 

参数        |     取值范围     | 说明 

alwaysLowered | yes/no            | 指定窗口隐藏在所有窗口之后 
alwaysRaised  | yes/no            | 指定窗口悬浮在所有窗口之上 
depended      | yes/no            | 是否和父窗口同时关闭 
directories   | yes/no            | Nav2和3的目录栏是否可见 
height        | pixel value       | 窗口高度 
hotkeys       | yes/no            | 在没菜单栏的窗口中设安全退出热键 
innerHeight   | pixel value       | 窗口中文档的像素高度 
innerWidth    | pixel value       | 窗口中文档的像素宽度 
location      | yes/no            | 位置栏是否可见 
menubar       | yes/no            | 菜单栏是否可见 
outerHeight   | pixel value       | 设定窗口(包括装饰边框)的像素高度 
outerWidth    | pixel value       | 设定窗口(包括装饰边框)的像素宽度 
resizable     | yes/no            | 窗口大小是否可调整 
screenX       | pixel value       | 窗口距屏幕左边界的像素长度 
screenY       | pixel value       | 窗口距屏幕上边界的像素长度 
scrollbars    | yes/no            | 窗口是否可有滚动栏 
titlebar      | yes/no            | 窗口题目栏是否可见 
toolbar       | yes/no            | 窗口工具栏是否可见 
Width         | pixel value       | 窗口的像素宽度 
z-look        | yes/no            | 窗口被激活后是否浮在其它窗口之上 
===================================================== 

【1、最基本的弹出窗口代码】 

Js代码  
     
<!--     
window.open ('page.html')     
-->     
  
<!--  
window.open ('page.html')  
-->  
因为着是一段javascripts代码,所以它们应该放在标签和之间。是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。 
Window.open ('page.html') 用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(.. /)均可。用单引号和双引号都可以,只是不要混用。 
这一段代码可以加入HTML的任意位置, 和之间可以,间也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。 

【2、经过设置后的弹出窗口】 

下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。 
我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。 

Js代码  
     
<!--     
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no')     
//写成一行     
-->     
  
<!--  
window.open ('page.html', 'newwindow', 'height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no')  
//写成一行  
-->  
参数解释: 

js脚本开始; 
window.open 弹出新窗口的命令; 
'page.html' 弹出窗口的文件名; 
'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替; 
height=100 窗口高度; 
width=400 窗口宽度; 
top=0 窗口距离屏幕上方的象素值; 
left=0 窗口距离屏幕左侧的象素值; 
toolbar=no 是否显示工具栏,yes为显示; 
menubar,scrollbars 表示菜单栏和滚动栏。 
Resizable=no 是否允许改变窗口大小,yes为允许; 
location=no 是否显示地址栏,yes为允许; 
status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许; 
js脚本结束 
【3、用函数控制弹出窗口】 

下面是一个完整的代码。 
Js代码  
     
     
     
<!--     
function openwin() { window.open ("page.html", "newwindow", "height=100, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")     
//写成一行     
}     
//-->     
  
<!--  
function openwin() { window.open ("page.html", "newwindow", "height=100, width=400, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")  
//写成一行  
}  
//-->  
  …任意的页面内容…  
  

这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。 
怎么调用呢? 
方法一: 浏览器读页面时弹出窗口; 
方法二: 浏览器离开页面时弹出窗口; 
方法三:用一个连接调用: 
打开一个窗口 注意:使用的"#"是虚连接。 
方法四:用一个按钮调用: 


【4、同时弹出2个窗口】 

对源代码稍微改动一下: 
Js代码  
     
<!--     
function openwin()     
{ window.open ("page.html", "newwindow", "height=100, width=100, top=0,left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")     
//写成一行     
window.open ("page2.html", "newwindow2", "height=100, width=100, top=100, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")     
//写成一行     
}     
//-->     
  
<!--  
function openwin()  
{ window.open ("page.html", "newwindow", "height=100, width=100, top=0,left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")  
//写成一行  
window.open ("page2.html", "newwindow2", "height=100, width=100, top=100, left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")  
//写成一行  
}  
//-->  
为避免弹出的2个窗口覆盖,用top和left控制一下弹出的位置不要相互覆盖即可。最后用上面说过的四种方法调用即可。 
注意:2个窗口的name(newwindows和newwindow2)不要相同,或者干脆全部为空。OK? 

【5、主窗口打开文件1.htm,同时弹出小窗口page.html】 

如下代码加入主窗口区: 
Js代码  
     
<!--     
function openwin()     
{window.open("page.html","","width=200,height=200")     
}     
//-->     
  
<!--  
function openwin()  
{window.open("page.html","","width=200,height=200")  
}  
//-->  
加入区: 
open即可。 【6、弹出的窗口之定时关闭控制】 

下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入到page.html的HTML中,可不是主页面中,否则…),让它10秒后自动关闭是不是更酷了? 
首先,将如下代码加入page.html文件的区: 
Js代码  
     
function closeit()     
{setTimeout("self.close()",10000) //毫秒}     
  
function closeit()  
{setTimeout("self.close()",10000) //毫秒}  
然后,再用 这一句话代替page.html中原有的这一句就可以了。(这一句话千万不要忘记写啊!这一句的作用是调用关闭窗口的代码,10 秒钟后就自行关闭该窗口。) 

【7、在弹出窗口中加上一个关闭按钮】 
Js代码  
     
   

  
呵呵,现在更加完美了! 

【8、内包含的弹出窗口-一个页面两个窗口】 

上面的例子都包含两个窗口,一个是主窗口,另一个是弹出的小窗口。 
通过下面的例子,你可以在一个页面内完成上面的效果。 
Js代码  
     
     
     
function openwin()     
{OpenWindow=window.open("", "newwin", "height=250, width=250,toolbar=no,scrollbars="+scroll+",menubar=no");     
//写成一行     
OpenWindow.document.write("<TITLE>例子</TITLE>")     
OpenWindow.document.write("<BODY BGCOLOR=#ffffff>")     
OpenWindow.document.write("<h1>Hello!</h1>")     
OpenWindow.document.write("New window opened!")     
OpenWindow.document.write("</BODY>")     
OpenWindow.document.write("</HTML>")     
OpenWindow.document.close()}     
打开一个窗口     
  
function openwin()  
{OpenWindow=window.open("", "newwin", "height=250, width=250,toolbar=no,scrollbars="+scroll+",menubar=no");  
//写成一行  
OpenWindow.document.write("<TITLE>例子</TITLE>")  
OpenWindow.document.write("<BODY BGCOLOR=#ffffff>")  
OpenWindow.document.write("<h1>Hello!</h1>")  
OpenWindow.document.write("New window opened!")  
OpenWindow.document.write("</BODY>")  
OpenWindow.document.write("</HTML>")  
OpenWindow.document.close()}  
打开一个窗口  
看看 OpenWindow.document.write()里面的代码不就是标准的HTML吗?只要按照格式写更多的行即可。千万注意多一个标签或少一个标签就会出现错误。记得用OpenWindow.document.close()结束啊。 

【9、终极应用--弹出的窗口之Cookie控制】 

回想一下,上面的弹出窗口虽然酷,但是有一点小毛病(沉浸在喜悦之中,一定没有发现吧?)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,是不是非常烦人?:-(有解决的办法吗?Yes! ;-) Follow me. 
我们使用 cookie来控制一下就可以了。 
首先,将如下代码加入主页面HTML的区: 
Js代码  
     
function openwin()     
{window.open("page.html","","width=200,height=200")}     
function get_cookie(Name)     
{var search = Name + "="     
var returnvalue = "";     
if (document.cookie.length > 0) {     
offset = document.cookie.indexOf(search)     
if (offset != -1) {     
offset += search.length     
end = document.cookie.indexOf(";", offset);     
if (end == -1)     
end = document.cookie.length;     
returnvalue=unescape(document.cookie.substring(offset,end))     
}     
}     
return returnvalue;     
}     
function loadpopup(){     
if (get_cookie('popped')==''){     
openwin()     
document.cookie="popped=yes"     
}     
}     
  
function openwin()  
{window.open("page.html","","width=200,height=200")}  
function get_cookie(Name)  
{var search = Name + "="  
var returnvalue = "";  
if (document.cookie.length > 0) {  
offset = document.cookie.indexOf(search)  
if (offset != -1) {  
offset += search.length  
end = document.cookie.indexOf(";", offset);  
if (end == -1)  
end = document.cookie.length;  
returnvalue=unescape(document.cookie.substring(offset,end))  
}  
}  
return returnvalue;  
}  
function loadpopup(){  
if (get_cookie('popped')==''){  
openwin()  
document.cookie="popped=yes"  
}  
}  
然后,用(注意不是openwin而是loadpop啊!)替换主页面中原有的这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。真正的Pop-Only-Once! 
参考【http://spring-yyy.iteye.com/blog/1009946】 
分享到:
评论

相关推荐

    JavaScript语言参考手册

    这一章对应于 Window 对象和客户端与之相关的对象:Frame,Location 和 History。 Window 属性 方法 Frame Location 属性 方法 History 属性 方法 screen 属性 第七章 表单 这一章对应于使用表单,表单是出现在...

    javascript完全学习手册1 源码

    1.3 在Web页面中使用JavaScript 5 1.3.1 HTML的基本结构 5 1.3.2 在HTML中嵌入JavaScript 7 1.3.3 链接JavaScript文件 9 1.4 编写JavaScript的工具 11 1.4.1 使用纯文本编辑器 11 1.4.2 使用专业化脚本编辑工具 13 ...

    javascript完全学习手册2 源码

    1.3 在web页面中使用JavaScript 1.3.1 HTML的基本结构 1.3.2 在HTML中嵌入JavaScript 1.3.3 链接JavaScript文件 1.4 编写JavaScript的工具 1.4.1 使用纯文本编辑器 1.4.2 使用专业化脚本编辑工具 ...

    javascript高级教程.pdf

    第1 章 JavaScript 基 础 1.1 关 于JavaScript 1.2 了 解JavaScript 1.3 World Wide Web 1.4 Web 应用程序结构 1.5 JavaScript 与VBScript 第2 章 JavaScript 与HTML 2.6 HTML 基 础 2.7 在HTML 文档中嵌入...

    JavaScript详解(第2版)

     13.2.4 JavaScript对象方法和事件   13.3 处理窗口事件或框架事件   13.3.1 onLoad和onUnLoad事件   13.3.2 onFocus和onBlur事件函数   13.3.3 onResize事件处理函数   13.4 鼠标事件处理   ...

    源文件程序天下JAVASCRIPT实例自学手册

    7.5.1 使用back()和forward()方法进行站点导航 7.5.2 使用go()方法进行站点导航 7.5.3 常见属性和方法汇总 7.6 Location对象 7.6.1 统一资源定位器(URL) 7.6.2 Location对象属性与URL的对应 7.6.3 使用reload()...

    JavaScript中文参考手册

    这一章对应于 Window 对象和客户端与之相关的对象:Frame,Location 和 History。 Window 属性 方法 Frame Location 属性 方法 History 属性 方法 screen 属性 第七章 表单 这一章对应于使用表单,表单...

    javascript_高级编程

    第9 章 location 对象. 9.26 hash 属性 9.27 Href 属性 9.28 pathname 属性 9.29 Protocol 属性 第10 章 history 对象 第11 章 layer 对象. 11.30 layer 属性. 11.31 layer 对象的方法 11.32 JavaScript ...

    javascript学习笔记.docx

    其实,它是Location类的一个实例,它还有一个reload()方法可以装载信的URL(用Back按钮不能回退到原页面)。 12) history属性可看成是代表历史URL的一个特殊数组,它的可读length属性表明数组的长度。支持三种方法...

    javascript函数的解释

    90.window.history.back()返回上一页,window.history.forward()返回下一页,window.history.go(返回第几页,也可以使用访问过的URL) 91.document.write()不换行的输出,document.writeln()换行输出 92.document.body....

    javascript从入门到跑路—–小文的js学习笔记(8)—–bom的对象及其用法—window 、History、location、navigator 、screen

     ECMAScript是 JavaScript的核心,但是在 Web中使用的 JavaScript, BOM (浏览器对象模型)才是真正的核心。BOM 提供了很多对象,用于访问浏览器的功能,但这些功能与任何网页内容无关。 二、window 对象下的属性...

    JavaScript基础和实例代码

    7.5.1 使用back()和forward()方法进行站点导航 7.5.2 使用go()方法进行站点导航 7.5.3 常见属性和方法汇总 7.6 Location对象 7.6.1 统一资源定位器(URL) 7.6.2 Location对象属性与URL的对应 7.6.3 使用reload()...

    JavaScript王者归来part.1 总数2

     1.7 学习和使用JavaScript的几点建议   1.8 关于本书的其余部分   第2章 浏览器中的JavaScript  2.1 嵌入网页的可执行内容   2.2 赏心悦目的特效   2.3 使用JavaScript来与用户交互  2.4 绕开脚本陷阱 ...

    common-history:HTML5 历史 API 和哈希片段控制的一致 API

    common-history 由HashLocation和HistoryLocation 。 它提供相同的接口。 HashLocation是包装散列片段控制。 HistoryLocation是包装 HTML5 历史 API。 // ececute http://example.com/ import { HashLocation } ...

    javascript常用对象梳理

    熟练掌握window对象的status、location、name、self、opener属性的使用 Window对象是客户端javascript最高层对象之一,只要打开浏览器窗口,不管该窗口中是否有打开的网页,当遇到BODY、FRAMESET或FRAME元素时,...

    JavaScript刷新页面的几种方法总结

    1,reload 方法 该方法强迫浏览器刷新当前页面。 语法:location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页。...通常使用: location.reload() 或者是 history.go

    HTML5-History-API:针对不支持pushState,replaceState的浏览器HTML5历史API扩展

    该库根据W3C规范运行,没有添加任何新方法或不兼容的方法。 可以完全按照例如Dive Into HTML5书( )或History API规范( )中的描述使用该库 )。 您可以使用以下命令安装此插件: npm install html5-history-api...

    javaScript对象

    4. 使用history和location对象的相关属性和方法可以轻松的实现游览器中“后退”、“前进”和“刷新”按钮的功能 5. Document对象的getElementById()方法用于访问唯一的元素 6. Document对象的getElementsByName()...

    107个常用javascript语句

    90.window.history.back()返回上一页,window.history.forward()返回下一页,window.history.go(返回第几页,也可以使用访问过的URL) 91.document.write()不换行的输出,document.writeln()换行输出 92.document.body....

    JavaScript笔记

    使用方法:方法名()-->方法调用-->立即执行 2.js文件:网页外专门保存js脚本的文件--推荐 强调:HTML、CSS、JS都要使用UTF-8编码保存(window系统) 使用js文件引入网页:[removed][removed] 强调:一旦定义...

Global site tag (gtag.js) - Google Analytics