一. Window 对象
每次出现时被自动创建。
二.
open() 方法用于打开一个新的浏览器窗口或查找一个已命名的窗口。
三.
window.open(URL,name,features,replace)
参数
描述
URL
一个可选的字符串,声明了要在新窗口中显示的文档的 URL。如果省略了这个参数,或者它的值是空字符串,那么新窗口就不会显示任何文档。
name
一个可选的字符串,该字符串是一个由逗号分隔的特征列表,其中包括数字、字母和下划线,该字符声明了新窗口的名称。这个名称可以用作标记 和
features
一个可选的字符串,声明了新窗口要显示的标准浏览器的特征。如果省略该参数,新窗口将具有所有标准特征。在窗口特征这个表格中,我们对该字符串的格式进行了详细的说明。
replace
一个可选的布尔值。规定了装载到窗口的 URL 是在窗口的浏览历史中创建一个新条目,还是替换浏览历史中的当前条目。支持下面的值:
true - URL 替换浏览历史中的当前条目。
false - URL 在浏览历史中创建新的条目。
四.窗口特征(Window Features)
channelmode=yes|no|1|0
是否使用剧院模式显示窗口。默认为 no。
directories=yes|no|1|0
是否添加目录按钮。默认为 yes。
fullscreen=yes|no|1|0
是否使用全屏模式显示浏览器。默认是 no。处于全屏模式的窗口必须同时处于剧院模式。
height=pixels
窗口文档显示区的高度。以像素计。
left=pixels
窗口的 x 坐标。以像素计。
location=yes|no|1|0
是否显示地址字段。默认是 yes。
menubar=yes|no|1|0
是否显示菜单栏。默认是 yes。
resizable=yes|no|1|0
窗口是否可调节尺寸。默认是 yes。
scrollbars=yes|no|1|0
是否显示滚动条。默认是 yes。
status=yes|no|1|0
是否添加状态栏。默认是 yes。
titlebar=yes|no|1|0
是否显示标题栏。默认是 yes。
toolbar=yes|no|1|0
是否显示浏览器的工具栏。默认是 yes。
top=pixels
窗口的 y 坐标。
width=pixels
窗口的文档显示区的宽度。以像素计。
五.
注意:
window.open(URL,name,features,replace)
如果name使用名字已经存在,那么不会创建一个新的窗口,而是会返回对已经存在的窗口的引用。
否则,则创建一个新的窗口。
我就是没有注意这点,网页全屏时候,花了很多时间。
六.具体业务功能
6.1 打开一个全屏的窗口
function openNewWindow(){
// chrome下,弹出窗口与父窗口大小一样,不能实现全屏
// ie8下,弹窗窗口大小固定,与父窗口大小无关,且不能实现全屏,不能调整窗口大小
// 不能实现ie8,chrome下全屏
window.open("http://google.com/",'新开googleWin',"fullscreen=1")
}
6.2 使本页面全屏
解决方案:先打开一个全屏的目标窗口,然后关闭本窗口。
代码:
function closeCurWindow(){
var url = document.location.href; //获得本窗口属性名
newWin = window.open(url,'','fullscreen=1,scrollbars=0');
window.opener = null; //除掉关闭时候的提示窗口
window.open('','_self'); //ie7
window.close();
}
注意:如果你在open方法中指定第二个参数,并为他赋予特定的值话,那么第二次使用上面方法,将无法创建新的窗口,因为系统默认的返回已经存在窗口的索引。
按ESC退出全屏
function exitFullScreenMe(){
// ie8下网页全屏,浏览器工具栏、菜单栏及我的电脑任务栏等全部隐藏,效果与chrome下差异较大
var esc=window.event.keyCode;
if(esc==27) { //判断是不是按的Esc键,27表示Esc键的keyCode.
var url=document.location.href;
win=window.open(url,'','fullscreen=0,directories=1,location=1,menubar=1,resizable=1,scrollbars=1,status=1,titlebar=1,toolbar=1'); //让新打开的窗口全屏
window.opener=null;//出掉关闭时候的提示窗口
window.open('','_self');//ie7
window.close(); //关闭老的窗口
}
}
document.onkeydown = exitFullScreenMe ; //当onkeydown(按键触发) 事件发生时调用hotkey函数
6.3同时弹出两个窗口
function openTwoWindow(){
// chrmoe下,当浏览器窗口较小时,先弹出的窗口会被后弹出的窗口遮挡,且弹出窗口的位置与浏览器窗口位置有关
// ie8下,弹出窗口的位置与浏览器窗口位置无关,始终显示在屏幕左上角
window.open("1.html",'新开googleWin1',"height=300, width=300, top=0, left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=n o, status=no");
window.open("1.html",'新开googleWin2',"height=300, width=300, top=0, left=400,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=n o, status=no");
}
注意:(1)窗口的名字不能相同,但可以都为空;
(2)要注意两个窗口的布局,是否符合你的要求。
6.4
第一次进入页面才弹出窗口.cookie解决
首先,将如下代码加入主页面HTML的
区:
function openwin(){
// 1.html自建文件
window.open("1.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在chrome下无效,ie8下正常
解决方案:尚未找到,有知道的道友请留言
原因:只是不可以从文件路径 js 的 cookies, 下文说的localhost不是很清楚,
觉得应该没有问题,直接用127.0.0.1 访问是一定可以的,也可以通过设置 --enable-file-cookies
Chrome doesn't support cookies for local files (or, like Peter Lyons mentioned, localhost*) unless you start it with the --enable-file-cookies flag. You can read a discussion about it at http://code.google.com/p/chromium/issues/detail?id=535.
*Chrome does support cookies if you use the local IP address (127.0.0.1) directly. so in the localhost case, that could be an easier workaround.
*/
document.cookie="popped=yes";
}
}
然后,用(注意不是openwin而是loadpop啊!)替换主页面中原有的这一句即可。你可以试着刷新一下这个页面或重新进 入该页面,窗口再也不会弹出了。
贴出该html全部代码:
弹窗demo