打印

BX9052: IE Opera 支持使用 window.navigate 方法控制页面跳转

作者:钱宝坤

标准参考

无。

问题描述

使用脚本程序控制页面导航有很多种方法,其中通过执行 window.navigate(sURL) 方法控制页面跳转的方式,并非所有浏览器支持。

造成的影响

非 IE Opera 中执行 window.navigate(sURL) 方法会导致脚本报错,可能影响其他程序执行;并且页面无法根据期望被导向目标地址。

受影响的浏览器

IE Opera  

问题分析

navigate 方法属于 window 对象, window 对象又隶属 BOM (Browser Object Model) 范畴。到现在为止 BOM 还没有被标准化,它由各个浏览器厂商制定,因此会有实现差异。

该方法最初是由 IE 浏览器提供,存在于 window 对象之中,参数为目标 URL 的字符串,可用于控制当前页面导航。

详细说明请参看 MSDN :navigate Method

时至今日,HTML5 规范草案中已经开始标准化 BOM,window 对象也在草案之中,可惜其中没有提到 navigate 方法。

可参考 HTML5 规范草案:5.2 The Window object

我们构建如下代码来测试 navigate 方法在各浏览器中的支持程度:

<button onclick="try{
      window.navigate('http://www.google.com')
    }catch(e){
      alert('不支持此方法')
    }">
调用 window.navigate 方法跳转页面
</button>

运行代码,得出各浏览器支持程度表:

IE Opera Firefox Chrome Safari
支持 不支持

可以明确看出,现阶段仅 IE Opera 支持 window.navigate 方法。

解决方案

应避免使用 navigate 方法进行页面跳转,可以使用所有浏览器都支持的 "location.href = sURL" 语句进行页面定位。

参见

知识库

相关问题

测试环境

操作系统版本: Windows 7 Ultimate build 7600
浏览器版本: IE6
IE7
IE8
Firefox 3.6.10
Chrome 8.0.552.0 dev
Safari 5.0.2
Opera 10.63
测试页面: navigate.html
本文更新时间: 2010-10-13

关键字

IE Opera navigate URL jump