JavaScript窗口功能指南之打开一个新窗口
2010-09-14 13:30:33 来源:WEB开发网关于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()方法,这个窗口的引用就会被返回。看看下面的链接代码:
CNET
当执行下面的语句时,就得到了新窗口的引用:
var latestNews = window.open("", "news");
让我们再试一试。点击这个链接 CNET,但它装载后,点击下面的按钮:
function changeURL(winName, newURL) { win = window.open("", winName); win.location.href = newURL; } // </script> <form><input onclick="changeURL('news', 'http://www.zdnet.com/')" type=button value="Load ZDNet"> </form> 这个按钮实际上取回了名字叫做“news”的窗口的引用,并且修改了那个窗口的URL。注意,如果在点击按钮前不点击那个链接,一个新的、空的窗口就被装载(因为指定的窗口名字不存在)。记住,不管窗口中的文档是什么,窗口始终保持着它的名字。下面是这个按钮相关的HTML和JavaScript代码:
<script LANGUAGE="JavaScript">
Tags:JavaScript 窗口 功能
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接