记跨浏览器开发的案例

讲之前:由于目前公司的项目开发时间比较早,大概十几年前的东东了。最开始只支持IE,还是IE低版本,IE8、9、10、11、Edge都会有点问题。需求开发完后,做浏览器适配时候,主要是要兼容IE8-11,chrome,firfox,当然还有国产浏览器如360、qq、搜狗等。现总结下遇到的问题及解决方案。

1.eval(idName)
问题:IE、Chrome浏览器下都可以使用eval(idName)或getElementById(idName)来取得id为idName的HTML对象;firefox下只能使用getElementById(idName)来取得id为idName的HTML对象.
解决方案:统一使用getElementById(idName)来取得id为idName的HTML对象

2.ActiveXObject对象未定义
问题:IE下支持用var obj = new ActiveXObject() 的方式创建对象,但其它浏览器都会提示ActiveXObject对象未定义
解决方案:
1>在使用new ActiveXObject()之前先判断浏览器是否支持ActiveXObject对象,以创建AJAX对象为例:

if(window.ActiveXObject){
    this.req=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest){
    this.req=new XMLHttpRequest();
}

2>使用jquery的ajax对象

3.XML操作
问题:装载xml文档使用ActiveXObject对象,但除非IE外,其它浏览器都不支持此方法。XML文档操作,IE和其它浏览器也存在不同,通常取XML对象的XML文本的方法是xml.documentElement.xml,但xml属性只有IE支持,其它浏览器均不支持。查找节点是常用的方法有selectNodes和selectSingleNode,这两个方法也只有IE支持,其它浏览器需要自己扩展。
解决方案:装载XML文档:用$.ajax()

4.window.execScript()
问题:除IE外都不支持window.execScript()方法,但是都支持window.eval()方法
解决方案:统一使用window.eval()方法

5.window.createPopup()未定义
问题:创建一个弹出窗口的方法,IE支持此方法,FireFox、Chrome都不支持,使用时会提示createPopup方法未定义
解决方案:使用之前判断是否支持window.createPopup()方法,不支持时使用原型扩展该方法。具体代码如下:

if (!window.createPopup) {
    var __createPopup = function () {
        var SetElementStyles = function (element, styleDict) {
            var style = element.style;
            for (var styleName in styleDict) 
                style[styleName] = styleDict[styleName];
        }
        var eDiv = document.createElement('div');
        SetElementStyles(eDiv, { 'position': 'absolute', 'top': 0 + 'px', 'left': 0 + 'px', 'width': 0 + 'px', 'height': 0 + 'px', 'zIndex': 1000, 'display': 'none', 'overflow': 'hidden' });
        eDiv.body = eDiv;
        var opened = false;
        var setOpened = function (b) {
            opened = b;
        }

        var getOpened = function () {
            return opened;
        }

        var getCoordinates = function (oElement) {
            var coordinates = { x: 0, y: 0 };
            while (oElement) {
                coordinates.x += oElement.offsetLeft;
                coordinates.y += oElement.offsetTop;
                oElement = oElement.offsetParent;
            }
            return coordinates;
        }
        return {
            htmlTxt: '',
            document: eDiv,
            isOpen: getOpened(),
            isShow: false,
            hide: function () {
                SetElementStyles(eDiv, { 'top': 0 + 'px', 'left': 0 + 'px', 'width': 0 + 'px', 'height': 0 + 'px', 'display': 'none' });
                eDiv.innerHTML = '';
                this.isShow = false;
            },
            show: function (iX, iY, iWidth, iHeight, oElement) {
                if (!getOpened()) {
                    document.body.appendChild(eDiv); setOpened(true);
                };
                this.htmlTxt = eDiv.innerHTML;
                if (this.isShow) {
                    this.hide();
                };
                eDiv.innerHTML = this.htmlTxt;
                var coordinates = getCoordinates(oElement);
                eDiv.style.top = (iX + coordinates.x) + 'px';
                eDiv.style.left = (iY + coordinates.y) + 'px';
                eDiv.style.width = iWidth + 'px';
                eDiv.style.height = iHeight + 'px';
                eDiv.style.display = 'block';
                this.isShow = true;
            }
        }
    }
    window.createPopup = function () {
        return __createPopup();
    }
}        

 

转载于:https://www.cnblogs.com/CodeDeath/articles/6214764.html

如何解决跨浏览器兼容性问题 前端开发领域,跨浏览器兼容性一直是令人头疼的问题。不同的浏览器对Web标准的支持程度不一,这使得统一的用户体验难以实现。然而,随着现代Web技术的发展,这一难题正逐渐变得可控。本文将深入探讨跨浏览器兼容性的基本原理、常见问题以及解决策略,通过具体实例帮助开发者理解并应对这一挑战。跨浏览器兼容性指的是Web应用在不同浏览器(如Chrome、Firefox、Safari、Edge、IE等)上的表现一致性。由于各浏览器内核的不同,它们对HTML、CSS、JavaScript的解析和执行可能有所差异,从而导致页面 阅读详情

相关推荐

C++开发NPAPI跨浏览器插件实战指南

NPAPI(Netscape Plugin Application Programming Interface)作为浏览器插件开发的标准接口,长期以来被广泛应用于浏览器插件的开发。然而,由于NPAPI插件通常具有较高的权限,这使得它们成为潜在的安全威胁。NPAPI插件的安全问题主要体现在以下几个方面:权限过高:NPAPI插件通常需要较高的权限来执行它们的操作,这些权限可能被恶意软件利用。漏洞利用。

weixin_42284380的博客 897

window.execScript('msgbox"消息",4,"Script"','vbs')的效果展示

转载于:https://www.cnblogs.com/moxiaoyu/archive/2012/04/26/2471116.html

weixin_33701294的博客 332

炼狱:window.createPopup()弹出提示tips

炼狱:window.createPopup()弹出提示tipsCCBS 系统增加了新的需求,给界面上的Text文本输入框和Select下拉框增加信息提示。对于Text输入框来说,实现起来并不难:重载Text文本框的onmouseover事件,然后显示出Text文本框的title也就可以了。但是,对于Select控件来说就远远没有这么简单了。首先Select本身没有Title属性!无疑增加了实现

SmartJavaer的专栏 2110

window.execScript的兼容性写法

把探嗅浏览器的操作提前到代码加载的时候,在代码加载的时候就立刻进行一次判断,以便让globalEval返回一个包裹了正确逻辑的函数 var globalEval = (function(){ var core_rnotwhite = /\S/; if(window.execScript){ return function(data){ ...

weixin_34238642的博客 435

window.execScript与eval的介绍

eval()函数的介绍 eval函数可以执行js代码字符串。eval是顶级函数,跟任何对象没有关系。eval的参数是一个字符串,如果这个字符串表示的是一个表达式,那么eval函数会对它进行求值计算。如果eval的参数不是字符串,eval会原样返回。 eval(newString("2+2")); //返回了包含"2+2"的字符串对象 eval("2+2...

滴水石穿 3445

跨终端、跨浏览器开发_跨浏览器开发:测试

跨终端、跨浏览器开发IE has another issue in regards to testing. A Windows machine will only ever have one version of IE installed at a time: if you’ve updated to Edge, you can’t keep a copy of IE9 on your syste...

cungui5726的博客 1567

跨浏览器扩展开发模板项目推荐

`extension-boilerplate` 是一个用于构建跨浏览器扩展的模板项目,支持 Chrome、Opera 和 Firefox 浏览器。该项目的主要编程语言包括 JavaScript、CSS 和 HTML。它提供了一个基础框架,帮助开发者快速启动并构建适用于多个浏览器的扩展。 ## 项目核心功能 1. **跨浏览器支持**:项目基于 WebExtensions 技术,支持 Chrom...

gitblog_00888的博客 734

什么是跨浏览器测试,为什么跨浏览器测试很重要?

跨浏览器测试中,对网站或移动应用程序进行测试以确保其“与浏览器无关”,即跨各种浏览器、设备、操作系统及其组合工作。因为每个浏览器解析文档对象模型(DOM)的方式都大不相同,所以输出对于被测Web应用程序的开发人员如何显式或隐式识别应用程序的UI控件很敏感。请务必注意,如果网站或Web应用程序可以在您的PC上运行,并不意味着它也可以在其他用户的计算机上运行。因此,您需要确保Web或移动应用程序在通过。

2401_86343726的博客 1024

FireBreath开发跨浏览器插件

录下来,后续有时间后补充实例。   http://www.firebreath.org

TragicGuy的专栏 1229

开发跨浏览器JavaScript

开发跨浏览器JavaScript判定浏览器类型:if(document.uniqueID)如果为TRUE是IE,否则非IE。1向表中追加行2通过JAVASCRIPT设置元素的样式3设置元素的CLASS属性4创建输入元素5向输入元素增加事件处理程序6创建单选按钮 1.   var cell = document

笨笨熊的专栏 746

AI如何助力NTKO跨浏览器插件开发

输入功能需求后,AI会自动分析不同浏览器的API文档,生成统一的适配层代码。更厉害的是,它不仅能发现问题,还能给出具体的修复建议,比如提醒我某个CSS属性需要加浏览器前缀。有一次我的签章功能在Edge上失效,AI直接指出了是Promise的实现差异,并给出了polyfill方案。上,一键部署功能让测试变得超级简单,写完代码直接就能看到在各个浏览器中的运行效果,省去了手动配置测试环境的麻烦。它不能完全替代人工,但至少能帮你省下80%的调试时间,让开发者把精力集中在业务逻辑上,而不是没完没了的兼容性问题上。

BlackStone33的博客 474

零基础开发NTKO跨浏览器插件:从入门到实战

作为一个刚接触浏览器插件开发的新手,我最近尝试开发了一个简单的NTKO跨浏览器插件,主要实现文档查看和基础编辑功能。总的来说,开发NTKO跨浏览器插件是一个很好的学习项目,既能掌握插件开发的基本流程,又能了解文档处理的相关知识。住,编程最重要的是动手实践,不要害怕犯错,每个问题都是学习的机会。对于NTKO插件,需要声明一些特定的权限,比如访问文档内容的权限。:在浏览器中加载未打包的插件进行测试,使用浏览器的开发者工具进行调试。:浏览器提供的开发者工具是调试插件的好帮手,可以查看日志、调试代码等。

CyanWave34的博客 608

如何处理前端中的跨浏览器兼容性问题?

如何处理前端中的跨浏览器兼容性问题?

商务合作欢迎私信我 2万+

跨浏览器兼容技术

跨浏览器兼容技术

qq_43733543的博客 1799

NTKO跨浏览器插件:提升开发效率的5个技巧

它的在线编辑器响应很快,内置的预览功能可以直接测试不同浏览器环境下的效果,省去了本地配置多浏览器的麻烦。最方便的是,完成开发后一键就能部署成可访问的演示页面,团队成员随时可以体验最新版本。最近在开发一个需要兼容多浏览器的项目时,我尝试了NTKO跨浏览器插件方案。经过一段时间的实践,总结出几个显著提升开发效率的技巧,分享给同样有跨浏览器开发需求的朋友们。这些技巧实施后,我们的开发效率提升了至少40%,特别是自动化测试和热更新带来的时间节省非常明显。比如发现某个浏览器的CSS解析特别耗时,就针对性地做了优化。

SilvermistFalcon19的博客 951

1小时搞定NTKO跨浏览器插件原型开发

最近在调研企业文档处理方案时,发现很多传统OA系统依赖的NTKO控件存在浏览器兼容问题。趁着周末尝试用现代技术栈快速实现了一个跨浏览器插件原型,录下这个高效验证创意的过程。传统NTKO控件依赖ActiveX技术,导致在Chrome、Firefox等现代浏览器中无法使用。对于需要快速验证的技术方案,这种所见即所得的开发方式确实能显著提升效率。下一步计划在原型基础上添加协同编辑功能,继续完善这个现代版的文档处理方案。特别是无需配置本地开发环境的特性,让我能专注在业务逻辑实现上。实现基本的滚动和分页逻辑。

EmeraldWolf23的博客 1068

ajax关键知识点之XMLHttpRequest运行周期与跨浏览器开发

本文深入解析Ajax开发中XMLHttpRequest对象的关键知识点。主要内容包括:XMLHttpRequest的五大运行周期(初始化、发送请求、状态监听、响应处理和DOM更新),开发中需解决的三大核心问题(跨浏览器兼容、数据安全和性能优化),并通过快递配送的类比进行通俗讲解。针对跨浏览器开发,强调使用兼容代码创建对象和检测API支持;在安全方面,建议遵守同源策略并使用HTTPS加密敏感数据。最后通过表格总结核心要点,为开发者提供全面的Ajax开发指导。

2301_78506709的博客 1019
上一篇: 登录圆形头像之网络加载与缓存到本地
下一篇: 月是故乡明
weixin_38166557
博客等级 码龄9年 67粉丝 666原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值