当你点击一个简单的链接打开一个新窗口时,你没有对新窗口任何控制权。浏览器以默认的功能打开新窗口。此外,你也不能使用JavaScript引用新窗口的window对象,因此你不可能操纵新窗口的属性。看看下面的JavaScript语句:
window.open("http://www.docjs.com/", "win");
这条语句打开一个新窗口,显示页面http://www.docjs.com/。 新窗口的名字被赋值为 "win"。window对象的open()方法的基本语法是:
window.open(sURL, sName);
2个参数都是可选的,如果不想指定URL或者窗口名称,就使用空字符串("").
sURL 是一个字符串,它指定了要显示文档的URL。如果不指定URL,就产生一个空窗口。 sName 是定义的窗口名字,这个名字被用于<form>或者<a>标记的 TARGET 属性。在Internet Explorer 5 和以后版本,如果定义这个数值为 "_search",那么就将在浏览器的搜索区打开 sURL 。
如果带有同一参数sName执行window.open()方法2次,会发生什么呢?就象用HTML产生的窗口一样,如果你定义一个已经存在窗口的名字,那么open()方法将简单地利用存在的窗口,而不是打开一个新的。看看下面的脚本程序:
window.open("http://www.javascript.com/", "win");
window.open("http://www.docjs.com/", "win");
执行上面的语句,浏览器将打开一个名字为“win”的新窗口,并在其中显示页面www.javascript.com。第2条语句替换当前窗口内容为页面www.docjs.com。下面的语句产生2个不同的窗口显示各自的内容:
window.open("http://www.javascript.com/", "win1");
window.open("http://www.docjs.com/", "win2");
如果不指定新窗口的名字,浏览器就自动地产生一个新窗口。这同样适用于“_blank”,但是空字符串是另外一回事。对于Internet Explorer和Navigator,有几个重要的区别,如下:
window.open("http://www.cnn.com/");
window.open("http://www.usatoday.com/");
Internet Explorer Navigator
打开2个不同的窗口 打开2个不同的窗口
window.open("http://www.cnn.com/", "_blank");
window.open("http://www.usatoday.com/", "_blank");
Internet Explorer Navigator
打开2个不同的窗口 打开2个不同的窗口
window.open("http://www.cnn.com/", "");
window.open("http://www.usatoday.com/", "");
Internet Explorer Navigator
打开2个不同的窗口 只打开一个窗口,名字为空("")
下面一行不会用到,只是列举出来。如果想命名窗口,就给出一个可以理解的名字(不是"")。如果不想命名,就干脆不指定这个参数,或者使用特殊的target位置"_blank"。
关于open()方法的一个重要之处是:open()方法几乎总是以window.open()的形式被调用执行,即使window代表了全局对象从而可以彻底省略。由于document对象也有open()方法,所以当我们想打开一个新窗口时,指定window对象将会清晰必要。在事件处理中,必须指定window.open(),而不能简单地使用open()。由于JavaScript中静态对象的作用范围限制,没有指定对象名字的open()调用等价于document.open()。比如说,当一个HTML按钮的事件处理发生时,范围就包含了按钮对象、表单对象、文档对象,以及窗口对象。这样,如果那样一个事件处理器引用了open()方法,识别器在文档对象就中止,事件处理器打开一个新的文档,而不是打开一个新的窗口。
返回值
为了合适地引用子窗口,应该将window.open()的结果分配给一个变量。如果窗口被成功地创建,window.open()就返回新窗口对象,或者返回null表示创建失败(比如由于内存不足)。如果你的脚本程序需要引用新窗口的元素,返回值就是非常重要的。然而,当新窗口打开后,并没有“父-子”关系存在。看看下面的语句:
var recentTips = window.open("http://www.docjs.com/tips/", "tips");
这里,我们分配给新窗口的window对象一个变量值名叫recentTips。如果在函数中调用window.open()方法,记住一定要省略var关键字,因为变量应该是全局的。否则,window的引用就位于局部变量中,并且当函数执行完毕后就不能被访问。下面的语句在一个alert对话框中显示新窗口的URL:
alert(recentTips.location.href);
你也可以通过下面的方法改变新窗口的URL:
recentTips.location.href = "http://www.usatoday.com/";
在前面一节中,你已经看到了如何使用HTML链接和表单打开一个新窗口。通过指定target属性或者给window对象的name属性分配一个数值,我们就能够命名窗口。但是怎样才能通过它的html名字来引用存在的窗口呢?答案是简单的。如果你执行了带有空字符串的URL参数以及存在窗口名字的window.open()方法,这个窗口的引用就会被返回。看看下面的链接代码:
<A HREF="http://www.cnet.com/" TARGET="news">CNET</A>
当执行下面的语句时,就得到了新窗口的引用:
var latestNews = window.open("", "news");
让我们再试一试。点击这个链接 CNET,但它装载后,点击下面的按钮:
这个按钮实际上取回了名字叫做“news”的窗口的引用,并且修改了那个窗口的URL。注意,如果在点击按钮前不点击那个链接,一个新的、空的窗口就被装载(因为指定的窗口名字不存在)。记住,不管窗口中的文档是什么,窗口始终保持着它的名字。下面是这个按钮相关的HTML和JavaScript代码:
<SCRIPT LANGUAGE="JavaScript">
<!--
function changeURL(winName, newURL) {
win = window.open("", winName);
win.location.href = newURL;
}
// -->
</SCRIPT>
<FORM>
<INPUT TYPE="button" VALUE="Load ZDNet"
onClick="changeURL('news', 'http://www.zdnet.com/')">
</FORM>
前面一段脚本程序表明了如何获取一个存在窗口的引用。如果你仅仅想改变存在窗口的URL,你同样可以直接使用目标页面的URL来调用window.open()方法:
function changeURL(winName, newURL) {
win = window.open(newURL, winName);
}
在下面一节中,我们将讨论如何定制新窗口的外观。
<a href="sdfaf" target="_blank">asdfsd</a>
分享到:
相关推荐
2 JavaScript窗口功能指南之打开一个新窗口; 3 JavaScript窗口功能指南之在窗口中书写内容; 4 利用弹出式窗口收集数据; 5 窗口对象的属性和方法; 。。。等等25个javaScript相关技术的DOC文档。希望对正在学习或...
《JavaScript权威指南》是JavaScript编程领域的一本经典之作,由著名技术作家David Flanagan撰写,被誉为"JavaScript犀牛书"。这本书深入浅出地讲解了JavaScript语言的核心概念、语法特性和高级特性,对于想要全面...
window.open()方法打开一个新窗口,document.open()方法打开一个新文档,在其中可以使用write()或者writeln()方法书写内容,它的语法是: oNewDoc = document.open(sMimeType[, sReplace]); sMineType...
JavaScript,也被称为JS,是一种广泛应用于网页和网络应用的脚本语言,主要在客户端运行,为用户提供动态交互体验。作为互联网技术的重要组成部分,JavaScript在现代Web开发中的地位不容忽视。"javascript权威指南与...
7. BOM处理:浏览器对象模型(BOM)允许JavaScript操作浏览器功能,如窗口大小、位置、历史记录、cookies等。 软件公司的笔试题目通常会涵盖这些基础知识点,同时可能包含一些进阶主题,如闭包、作用域链、事件委托...
《第五版JavaScript权威指南》作为一本深入解析JavaScript的专著,为开发者提供了全面、深入且权威的指导。书中不仅涵盖了语言的基础概念,还涉及了高级特性和最佳实践,旨在帮助读者成为JavaScript的专家。 1. **...
另外,BOM(Browser Object Model)允许开发者访问浏览器提供的各种功能,如窗口、历史记录、cookies等。 随着ES6(ECMAScript 2015)及后续版本的发布,JavaScript引入了许多新特性,如箭头函数、模板字符串、let...
原型链是JavaScript继承的基础,每个对象都有一个[[Prototype]]链接到另一个对象,形成了链状结构。 数组是特殊的对象,其键是整数。JavaScript还提供了Array.prototype上的许多实用方法,如push、pop、shift、...
《JavaScript 权威指南》是JavaScript编程领域的一本经典之作,中文第六版由淘宝前端团队翻译,为读者提供了全面、深入的JavaScript知识体系。这本书详细介绍了JavaScript的核心语法、对象、函数、类、DOM操作、BOM...
《JavaScript权威指南》是JavaScript编程领域的一本经典之作,由David Flanagan撰写,深受开发者喜爱。这本书深入浅出地介绍了JavaScript语言的各个方面,包括语法、数据类型、函数、对象、DOM操作、BOM处理以及错误...
JavaScript作为Web开发的核心技术之一,不仅用于网页交互,还广泛应用于服务器端开发、移动应用等领域。这本书的第五版是作者针对当时最新的JavaScript版本进行编写的,确保了内容的时效性和准确性。 本书首先介绍...
《JavaScript权威指南(第5版)》是目前最为权威的JavaScript学习参考书籍之一。...《JavaScript权威指南(第5版)》无疑是一个非常不错的选择,无论是用于初学者建立扎实的基础,还是中高级开发者进行知识的深化。
JavaScript权威指南(第6版)是一本广受赞誉的编程指南,专为深入理解JavaScript语言而编写。本书全面覆盖了JavaScript的核心语法、函数、对象、数组、字符串、正则表达式、DOM操作、BOM处理、事件处理以及错误处理等...
4. **闭包**:闭包是JavaScript中一个高级特性,它允许函数访问并操作其外部作用域的变量,即使在其外部作用域已经结束的情况下。理解闭包有助于编写高效且模块化的代码。 5. **异步编程**:JavaScript的事件循环和...
4. **原型和继承**:JavaScript使用原型链实现对象的继承,每个对象都有一个原型,可以通过`__proto__`或`Object.getPrototypeOf`访问。通过原型,可以实现属性和方法的共享。 5. **函数与高阶函数**:函数是...
- **Angular**:一个完整的MVC框架,适用于构建大型单页应用。 - **Vue.js**:以易用性和灵活性著称,Vue.js逐渐成为许多开发者的首选框架。 通过以上知识点的概述,可以看出《JavaScript权威指南》第六版不仅...
3. **闭包**:闭包是JavaScript中的一个强大特性,它允许函数访问并操作其词法作用域内的变量,即使在函数执行完毕后这些变量依然存在。闭包常用于实现模块化、数据隐藏和记忆化等功能。 4. **异步编程**:...
《JavaScript权威指南》第四版是JavaScript开发者不可或缺的经典教程之一,由David Flanagan撰写,全面而深入地探讨了JavaScript语言的各个方面。这本书对于想要深入了解JavaScript语法、DOM操作、BOM处理、Ajax技术...
《JavaScript权威指南第六版中文版》是一本深受程序员喜爱的经典教程,它全面、深入地讲解了JavaScript语言的核心概念和技术。本书旨在帮助读者掌握JavaScript的精髓,无论是初学者还是经验丰富的开发者,都能从中...
《JavaScript权威指南(第六版)》是David Flanagan著作的一本关于JavaScript编程语言的经典书籍,中文扫描版使得中文读者能够更方便地学习和理解这一重要的Web开发语言。这本书全面覆盖了JavaScript的核心概念、语法...