`

IE 内核对于执行 javascript 的几个严重 BUG

阅读更多

在写脚本的过程,有以下几个大的 BUG ,害我找答案找了 N 久。现把它写出来,希望大家少走点弯路。

 注: IE 6.0 以下版本会出现, 7.0 没测试过

一、文本转换成数字,parseInt 在 IE 中有一个严重的 BUG
        alert(parseInt("8")) → 执行结果为  0
        解决方法:改成  parseFloat("8").toFixed(0) → 保留小数点后 0 位数,即整数

二、document.getElementById 的方法执行有误
       document.all 在其它浏览器中不支持,所以我用的最多的是 document.getElementById。但是我发现,当控件的 ID 与名称相同的时候,document.getElementById 就出现错误了。例如:
       <input id="Txt_Name01" name="Txt_Name">
       <input id="Txt_Name" name="Txt_Name">
alert(document.getElementById("Txt_Name").id) 执行结果是  "Txt_Name01"
以此推断:document.getElementById 在 IE 中,先以 name 由上而下进行查找,没有找到控件的时候才以 id 进行查找。
解决方法,用另一方法代替。
document.getObjectById = function(id)
{
    if(document.all)
    {
        var obj = document.getElementById(id);
        if(obj == null){return null;}
        if(obj.id == id){return obj;}
        obj = document.getElementsByName(id);
        for(var i=0;i< obj.length;i++)
        {
            if(obj[i].id == id){return obj[i];}
        }
        return null;
    }
    else{return document.getElementById(id);}
}

三、 通过 select 节点的 innerHTML 设置下拉节点无效
        当两个 select 下拉框需要进行复制时,一个最快捷的方式就是用 innerHTML ,但 IE 的 BUG 却让我无话可说。例如:把 DDL_Dept 的下拉节点复制到 DDL_Dept02
<select id="DDL_Dept">
     <option>01</option>
     <option>02</option>
</select>
<select id="DDL_Dept02" style="width:20px">
     <option>03</option>
</select>

function CloneNode()
{
     var d1=document.getElementById("DDL_Dept");
     var d2=document.getElementById("DDL_Dept02");
    //d2.innerHTML = d1.innerHTML; 此句应该是最快的,但无效,只好变通一下了
    d2.innerHTML =""; //这句却是可以的,真是无语
    var re = /(<\/SELECT>)/gi;
    var t = d2.outerHTML.replace( re ,""); //先去掉</SELECT>
    d2.outerHTML = ot + d1.innerHTML+"</SELECT>";//再加上组合好的内容
}

以上代码只在 IE 内核的浏览器出现,FireFox 没有上述问题

 

转自:http://blog.csdn.net/cityhunter172/archive/2009/02/04/3862009.aspx

分享到:
评论

相关推荐

    非ie内核浏览器activex支持插件

    3. **跨内核支持**:插件的目的是实现跨内核的兼容性,这通常涉及到对ActiveX对象的重新实现或者在非IE浏览器中创建一个代理对象,使得调用ActiveX控件的JavaScript代码能在非IE内核环境中运行。 4. **安全问题**:...

    java浏览器调用ie内核

    `javax.script`包则提供了脚本引擎接口,可以执行JavaScript代码,间接与ActiveX控件交互。 4. **安全性与限制:** 使用ActiveX控件存在安全风险,因为它可以访问系统资源,容易成为恶意软件的入口。因此,Java...

    一个利用 IE 内核自己写的 Web 浏览器的例子

    标题中的“一个利用 IE 内核自己写的 Web 浏览器的例子”指的是开发人员使用 Internet Explorer(IE)的浏览技术,即 Trident 渲染引擎,创建了一个自定义的 Web 浏览器。这个项目展示了如何在非标准浏览器环境中...

    java基于IE内核网页浏览器

    - **Webkit or JWebBrowser**: 虽然标题提到是基于IE内核,但考虑到IE的逐渐淘汰,开发者也可能选择使用像Webkit这样的开源渲染引擎,或者使用Java的JWebBrowser库,它提供了一个与IE兼容的Java组件。 2. IE内核...

    JavaScript内核系列 pdf

    JavaScript内核系列是一份深入探讨JavaScript编程语言及其内核的宝贵资源,对于正在学习或从事JavaScript开发的学生和程序员来说,它提供了丰富的知识和技术指导。这份资料详细阐述了JavaScript的各个方面,包括语法...

    基于IE内核的浏览器,内含源码

    总的来说,基于IE内核的浏览器在特定环境下仍具有其价值,尤其是对于需要与旧有系统兼容的场景。同时,源码的开放性为开发者提供了宝贵的资源,推动了浏览器技术的不断进化。然而,面对新时代的挑战,如何在保持兼容...

    基于IE内核的浏览器

    在本项目中,我们将探讨如何使用MFC(Microsoft Foundation Classes)库来构建一个基于IE内核的浏览器。 MFC是微软提供的一套C++类库,它简化了Windows应用程序的开发,包括用户界面、文件处理和网络通信等方面。在...

    谷歌浏览器切换IE内核插件

    谷歌浏览器切换IE内核插件,有些时候需要在谷歌浏览器里面打开一些只有IE才能打开的插件,列如老版本的weboffice等时可以切换IE内核

    visual c++开发基于IE内核的浏览器 源代码.zip

    本文将深入探讨如何使用Visual C++(VC++)开发一个基于Internet Explorer(IE)内核的浏览器。这涉及到的知识点包括C++编程、Windows API调用、COM组件以及对IE内核的接口利用。 首先,`MyBrowser`系列源文件是...

    C#实现基于IE内核的简单浏览器完整实例

    在C#中实现一个基于IE内核的简单浏览器涉及到多个关键知识点,主要集中在Windows Forms应用程序开发、WebBrowser控件的使用以及用户界面交互等方面。以下是对这些知识点的详细阐述: 1. **Windows Forms应用程序...

    google浏览器添加IE内核教程

    ### Google浏览器添加IE内核教程:提升浏览兼容性与便捷性 #### 一、引言 随着互联网技术的不断进步,浏览器作为用户访问网络的重要工具,其功能与性能的优化日益受到重视。Google浏览器(Chrome)凭借其快速、...

    在谷歌浏览器上安装ie内核

    标题中的“在谷歌浏览器上安装ie内核”指的是在Google Chrome浏览器中添加一个扩展程序,以便模拟Internet Explorer(IE)浏览器的行为。这是因为某些网站或应用可能仅与IE内核兼容,而不支持基于Chromium的Chrome。...

    滴滴清单ie内核

    滴滴ie内核

    非ie内核浏览器activex支持插件.rar

    非IE内核浏览器的ActiveX支持插件通常会采用以下几种方法来解决这个问题: 1. **模拟环境**:插件创建一个虚拟的IE环境,在这个环境中运行ActiveX控件。这种方式能够确保大部分ActiveX控件的功能,但可能因为性能...

    一个小巧的仿谷歌界面IE内核浏览器

    对于这个仿谷歌界面的IE内核浏览器,其开发者可能面临一些挑战,比如如何在IE内核的基础上实现与Chromium类似的用户体验,以及如何优化单一进程架构以减少卡顿。同时,由于IE内核的更新速度较慢,可能存在安全漏洞和...

    非ie内核浏览器activex支持插件安装包

    总之,“非ie内核浏览器activex支持插件安装包”是一个解决非IE浏览器与ActiveX不兼容问题的工具,它通过特殊的技术手段实现了ActiveX在现代浏览器中的运行,但用户在使用时需谨慎处理安全问题,并留意技术发展的...

    用C#定制一个简单的浏览器源程序,IE内核

    本主题涉及的是如何利用C#构建一个基于IE(Internet Explorer)内核的简单浏览器程序。首先,我们需要理解IE内核的工作原理,然后探讨如何在C#环境下集成这个内核。 IE内核,也称为Trident渲染引擎,是由微软开发的...

    IE Tab Chrome 插件,切换IE内核

    标题“IE Tab Chrome 插件,切换IE内核”揭示了本文将要讨论的是一个名为“IE Tab”的Chrome浏览器插件,其主要功能是允许用户在Chrome浏览器中以Internet Explorer(IE)内核模式浏览网页。这对于那些仍然需要使用...

    让软件支持系统IE内核.rar

    然而,这个控件默认可能会使用过时的或者非系统的IE(Internet Explorer)内核,导致与现代网页标准不兼容。 标题"让软件支持系统IE内核.rar"所指的,就是解决这个问题的一个小工具。这个工具简化了设置过程,使得...

    用E语言写的一个很简单的IE内核浏览器

    很简单的一个IE内核的浏览器,支持所有win系统(32位与64位上都运行成功),主页设置为百度,不能修改,永不弹窗,没有收藏夹,所有网址都要手动输入。 虽然简单,但有的场合很好用,试试你就知道,因为小,所以速度...

Global site tag (gtag.js) - Google Analytics