- javascript使用window对象的open()创建新的浏览器窗口
window.open(url,name,feature)
第一个参数是新窗口的URL地址,省略会弹出一个空白的浏览器窗口
第二个参数是新窗口的名字。
最后一个参数是以逗号分隔的字符串,内容是新窗口的各种属性。(尺寸和功能)
function popUp(winURL)
{
window.open(winURL,"popup","width=320,height=480");//打开一个宽320,高480的新窗口popup
}// JavaScript Document
因为在这个函数中已经对新窗口命名,所以放把新的URL地址传递给此函数时,这个函数将把新窗口的现有文档替换为新URL地址处的文档
2. javascript 伪协议
真协议:因特网计算机传输数据包的标准化通信机制
伪协议:非标准化的通信机制的统称
<a href="javascript:popUp('http://www.example.com/');">Example</a> //通过伪协议调用popUp()函数的具体做法
- 内嵌的事件处理函数
<a href="#" onclick="popUp('http://www.example.com/'); return false;">Example</a>
//#是未指向任何目标的空连接 return false使得链接不会真的被打开
- 分离javascript 把一个事件添加到HTML文档的某个元素上
<a href=http://www.example.com/ class=”popUp”>Example</a>
//javascript 代码预留出退路,让href是一个真是存在的URL地址,有效的链接
<a href="http://www.example.com" onclick="popUp('http://www.example.com'); return false;">Example</a>
//代码简化
<a href="http://www.example.com/" onclick="popUp(this.getAttribute('href')); return false;">Example</a>
//更简洁的代码
<a href="http://www.example.com/" onclick="popUp(this.href); return false;">Example</a>
//以onclick事件和popUp()函数为例
var links=document.getElementsByTagName("a");//取出所有的链接放在一个数组里
for(var i=0;i<links.length;i++){ //遍历数组
if(links[i].className=="popup"){ //找到链接class等于popup,说明链接被点击时调用popUp函数
links[i].onclick=function(){
popUp(this.getAttribute("href"));//把链接的href传递给popUp()函数
return false; //取消这个链接的默认行为,不让链接吧访问者带离当前窗口
}
}
}
这样还有一个问题,就是文件被加载时,javascript立即执行,会在html文档完全加载之前执行。应该让文档加载完毕后执行这个事件。
解决方法:
Document对象又是window对象的一个属性,当window对象触发onload事件时,document对象已经存在。
window.onload=prepareLinks;
function prepareLinks(){
var links=document.getElementsByTagName("a");//取出所有的链接放在一个数组里
for(var i=0;i<links.length;i++){ //遍历数组
if(links[i].getAttribute("class")=="popup"){ //找到链接class等于popup,说明链接被点击时调用popUp函数
links[i].onclick=function(){
popUp(this.getAttribute("href"));//把链接的href传递给popUp()函数
return false; //取消这个链接的默认行为,不让链接吧访问者带离当前窗口
}
}
}
function popUp(winURL)
{
window.open(winURL,"popup","width=320,height=480");//打开一个宽320,高480的新窗口popup
}// JavaScript Document
- 向后兼容 把javascript代码放在一个if语句中,支持则执行,否则不执行。
window.onload=prepareLinks;
function prepareLinks(){
if(!document.getElemnetsByTagName) return false;
var links=document.getElementsByTagName("a");//取出所有的链接放在一个数组里
for(var i=0;i<links.length;i++){ //遍历数组
if(links[i].getAttribute("class")=="popup"){ //找到链接class等于popup,说明链接被点击时调用popUp函数
links[i].onclick=function(){
popUp(this.getAttribute("href"));//把链接的href传递给popUp()函数
return false; //取消这个链接的默认行为,不让链接吧访问者带离当前窗口
}
}
}