精华内容
下载资源
问答
  • 本文是脚本之家小编日常整理些关于js兼容性问题,及IE与Firefox等常用浏览器兼容性分析,对js浏览器兼容性相关知识感兴趣的朋友一起学习吧
  • 浏览器兼容性测试5大浏览器
  • 浏览器兼容性设置浏览器兼容性设置浏览器兼容性设置浏览器兼容性设置浏览器兼容
  • 浏览器兼容性测试

    2019-03-11 09:57:24
    浏览器兼容性测试相关知识,简单易懂
  • 自主导航aie浏览器V2.0版|兼容性最好的绿色浏览器|编程所必备|相信我是你的最好选择
  • 资源名称:浏览器兼容性问题简介内容简介:浏览器兼容性问题分类浏览器的“模式”如何编写具有良好兼容性的网页显示问题:CSS兼容性height/width, position:fixed, …脚本问题:Java script 兼容性DOM, Date....
  • XMLHTTP多浏览器兼容性写法
  • 浏览器兼容性问题

    2012-07-27 10:08:11
    浏览器兼容性问题解决方案,问题比较全面,东西大家分享!
  • 兼容性测试方案-浏览器兼容性测试方案-浏览器
  • jquery自适应浏览器高度,兼容性好

    千次阅读 2016-12-29 16:35:59
    jquery自适应浏览器高度,兼容性好
    <script>
    $(function(){
    resizeLayout();
    $(window).resize(function(){
    resizeLayout();
    })
    })
    
    function resizeLayout(){
    var hei=$(window).height()
    $(".big").css("height",hei)
    
    }
    
    </script>


     

    展开全文
  • 各种浏览器兼容性和CSS HACK的写法,让你不再为IE6和各种浏览器兼容性发愁,非常方便!
  • 浏览器兼容性汇总

    2012-05-09 07:44:20
    里面讲述了浏览器兼容性问题的一些内容汇总
  • 关于浏览器兼容性一般的解决办法,对于那学对兼容性头痛的同学可以看看
  • 常见的浏览器兼容性问题

    千次阅读 2013-12-12 18:54:48
    浏览器兼容性浏览器开发
    常见的浏览器兼容性问题

    以下列举出的问题,仅存在于IE与非IE浏览器之间。实际开发中,遇到的兼容性问题将比以下列出的多得多,它不仅存在于IE与非IE浏览器之间,也存在于不同厂家以及不同版本的浏览器之间。要解决好浏览器的兼容性问题,更多的需要依赖于在开发中不断总结,不断积累经验或者通过第三方库解决。


    一、向table中追加tr时,别忽略了tbody

    //有如下html结构
    <table id="myTable"> 
    	<tbody id="myTableBody"></tbody> 
    </table>
    
    
    //非IE浏览器下添加tr
    var cell=document.createElement("td").appendChild(document.createTextNode("foo")); 
    vat row=document.createElement("tr").appendChild(cell); 
    document.getElementByld("myTable").appendChiid(row); 
    
    
    //IE浏览器下添加tr
    var cell=document.createElement("td").appendChild(document.createTextNode("foo")); 
    vat row=document.createElement("tr").appendChild(cell); 
    document.getElementByld("myTableBody").appendChiid(row); 
    
    
    //兼容性代码:
    var cell=document.createElement("td").appendChild(document.createTextNode("foo")); 
    vat row=document.createElement("tr").appendChild(cell); 
    document.getElementByld("myTableBody").appendChiid(row); 

    ※注意:寻找tbody节点时,最好直接通过id的方式找到节点,不能使用遍历table的子节点的方式选择tbody节点。因为对不同浏览器,取table的子节点,结果不同。IE认为table元素的子节点为tbody,而其他浏览器则认为table元素的子节点为tr。

    二、设置元素的样式

    //非IE浏览器:
    var spanElement = document.getElementById("mySpan"); 
    spanElement.setAttribute("style", "font-weight:bold; color:red;"); 
    
    
    //IE浏览器:
    var spanElement = document.getElementById("mySpan"); 
    spanElement.style.cssText = "font-weight:bold; color:red;"; 
    
    
    //兼容性代码:
    var spanElement = document.getElementById("mySpan"); 
    spanElement.setAttribute("style", "font-weight:bold; color:red;"); 
    spanElement.style.cssText = "font-weight:bold; color:red;"; 

    三、设置元素的class属性

    //非IE浏览器
    var element = document.getElementById("myElement"); 
    element.setAttribute("class", "styleC1ass"); 
    
    
    //IE浏览器
    var element = document.getElementById("myElement"); 
    element.setAttribute("className", "styleC1ass"); 
    
    
    //兼容性代码
    var element = document.getElementById("myElement"); 
    element.setAttribute("class", "styleClass"); 
    element.setAttribute("className", "styleC1ass"); 
    


    四、创建editor元素时,考虑到浏览器兼容性,应该遵循如下创建顺序

    创建元素后,应确保正确设置元素的属性(特别是type属性)后,再把它增加到父元素中。因为在某些浏览器中,只有创建了元素,而且正确地设置了type属性时,才会把新创建的元素增加到其父元素中。
    //错误的创建顺序
    var button = document.createElement("input"): 
    document.getElementById("formElement").appendChild(button); 
    button.setAttribute("type", "button");
    
    
    //正确的创建顺序
    var button = document.createElement("input"): 
    button.setAttribute("type", "button"); 
    document.getElementById("formElement").appendChild(button); 
    
    
    //顺便提下,当dom节点的插入顺序不当时,在IE下会导致内存泄漏,如下:
    var hostElement = document.getElementById("hostElement");
    var parentDiv = document.createElement("<div οnclick='foo()'>");
    var childDiv = document.createElement("<div οnclick='foo()'>");
    
    
    //错误的插入顺序
    parentDiv.appendChiid(childDiv);
    hostElement.appendChiid(parentDiv);
    
    
    //正确的插入顺序
    hostElement.appendChiid(parentDiv);
    parentDiv.appendChiid(childDiv);
    

    五、给dom对象绑定事件

    方式一、直接给对象(object)添加事件属性
    //非IE浏览器
    domObj.setAttribute( 'onclick', 'callFunction( event, param );' ); 
    
    
    //IE浏览器
     domObj.onclick = function(){ callFunction( event, param ); }; 
    
    
    //兼容性解决方法
     domObj.onclick = function(){ callFunction( event, param ); };
    

    ※这种事件兼容性绑定方式适合于对静态dom元素绑定事件。

    方式二、添加 listener 给 DOM 节点。其优势在于,对同一个 event 可以有多个 event listener,且适合于动态dom
    //非IE浏览器
    domObj.addEventListener( 'onclick', 'callFunction' ,false); 
    domObj.removeEventListener( 'onclick', 'callFunction' ,false); 
    
    //IE浏览器
    domObj.attachEvent('onclick', 'callFunction') ;
    domObj.detachEvent('onclick', 'callFunction') ;
    
    
    //兼容性代码(摘录自Dean Edwards的版本,个人觉得这个实现比较牛)
    function addEvent(element, type, handler) {
        //为每一个事件处理函数分派一个唯一的ID
        if (!handler.$$guid) handler.$$guid = addEvent.guid++;
        //为元素的事件类型创建一个哈希表
        if (!element.events) element.events = {};
        //为每一个"元素/事件"对创建一个事件处理程序的哈希表
        var handlers = element.events[type];
        if (!handlers) {
            handlers = element.events[type] = {};
            //存储存在的事件处理函数(如果有)
            if (element["on" + type]) {
                handlers[0] = element["on" + type];
            }
        }
        //将事件处理函数存入哈希表
        handlers[handler.$$guid] = handler;
        //指派一个全局的事件处理函数来做所有的工作
        element["on" + type] = handleEvent;
    };
    //用来创建全局唯一的ID计数器
    addEvent.guid = 1;
    
    
    function removeEvent(element, type, handler) {
        //从哈希表中删除事件处理函数
        if (element.events && element.events[type]) {
            delete element.events[type][handler.$$guid];
        }
    };
    
    
    function handleEvent(event) {
        var returnValue = true;
        //抓获事件对象(IE使用全局事件对象)
        event = event || fixEvent(window.event);
        //取得事件处理函数的哈希表的引用
        var handlers = this.events[event.type];
        //执行每一个处理函数
        for (var i in handlers) {
            this.$$handleEvent = handlers[i];
            if (this.$$handleEvent(event) === false) {
                returnValue = false;
            }
        }
        return returnValue;
    };
    //为IE的事件对象添加一些“缺失的”函数
    function fixEvent(event) {
        //添加标准的W3C方法
        event.preventDefault = fixEvent.preventDefault;
        event.stopPropagation = fixEvent.stopPropagation;
        return event;
    };
    fixEvent.preventDefault = function () {
        this.returnValue = false;
    };
    fixEvent.stopPropagation = function () {
        this.cancelBubble = true;
    };
    

    六、创建radio按钮需考虑兼容性

    //非IE浏览器
    var radioButton = document.createElement("input"); 
    radioButton.setAttribute("type", "radio"); 
    radioButton.setAttribute("name", "radioButton"); 
    radioButton.setAttribute("checked", "checked"); //在IE下,checked不被设置
    //注:这种方法在IE下可以创建radio,但是radio无法选中。
    
    
    //IE浏览器
    var radioButton = document.createElement("<input type='radio' name='radioButton' checked='checked' />"); //非IE浏览器下,这段代码会抛异常
    
    
    //兼容性代码
    if (document.uniqueID) { //uniqueID属性为IE扩展属性,非W3C标准,因此可以用于浏览器检测
        //IE
        var radioButton = decument.createElement("<input type='radio' name='radioButton' checked='checked'>");
    } else {
        //非IE
        var radioButton = document.createElement("input");
        radioButton.setAttribute("type", "radlo");
        radioButton.setAttribute("name", "radioButton");
        radioButton.setAttribute("checked", "checked");
    }

    七、创建Ajax需考虑兼容性

    IE和非IE浏览器创建Ajax方式各不相同,需要根据不同浏览器调用不同的创建方式,github上已有很多开源项目对此操作进行了封装,可以到github或google源码上搜索。


    八、Drag & Drop 事件的兼容性

    IE,Firefox 都支持 drag 和 drop 事件。除了跟 IE 一样支持注册事件到目标和源 element,Firefox 还支持注册 drop 事件到 document,这个事件将会在 drop 事件完成后被调用,而 IE 不支持此注册。
    输入法事件
    在 IE 下,输入过程将连续触发 keydown,keyup 事件,其中 keydown 得到的键值总是 229,keyup 事件可以得到正确键值。而在 Firefox 中,输入开始将依次触发 keydown,compositionstart 事件,输入法结束后依次触发 compositionend,keyup 事件,输入过程中不会收到 keydown/keyup 事件。

    九、其他兼容性问题:如CSS white-space,其他一些css属性等


    后记:过去,兼容性问题一直是困扰web开发人员的大难问题,特别是在自行创建框架的项目中。但从IE9开始,W3C标准逐步被纳入IE浏览器之中,到写此文章之时,已发布了IE11,至IE11为止,基本上IE已完成了对W3C标准的支持,弱化了ActiveX控件,提供了对HTML5和CSS3的支持。未来,随着浏览器厂商对HTML5和CSS3支持的不断完善,过去很多需要依赖于flash,java applet,activeX才能实现的功能将会被HTML5/CSS3技术所取代,web也将在前端发挥更重要作用,为用户提供更强大的功能和更好的体验。



    展开全文
  • 解决浏览器兼容性的常用方式,最终是否能解决问题,在于活学活用
  • 1为什么要有兼容性测试:比web浏览器还恐怖的手机浏览器  对于web网站,一般来说,目前我们需要兼容的是  1个操作系统(windows)X3种浏览器(ie6、ie7、firefox)=3种情况  要求高一点的web网站需要兼容的是  1个...
  • 本文给大家介绍了42种浏览器兼容性问题大汇总的相关知识,本文介绍的非常详细,感兴趣的朋友一起学习吧
  • 主要介绍了css与javascript跨浏览器兼容性,包括常见的css兼容性问题与javascript兼容性问题,以及IE与Firefox等常用浏览器兼容性分析,需要的朋友可以参考下
  • 浏览器兼容性测试工具

    万次阅读 2018-05-28 20:42:04
    相关连接:【浏览器兼容性概述】 一、浏览器兼容性测试工具 1.0、IETester【免费·exe】 这是我最先用的测试浏览器兼容性的工具,想必也是大家用的最多的一个,IETester是一个免费的Web浏览器调试工具,可以模拟出...

    相关连接:浏览器兼容性概述

    目录

    一、浏览器兼容性测试工具

    1.0、IETester【免费·exe】

    1.1、SuperPreview【收费·exe】

     1.2、Adobe Browserlab【在线测试】

    1.3、BrowserStack【在线测试】

    1.4、Sauce Labs【在线】

    1.5、Browsershots【在线】


    一、浏览器兼容性测试工具

    1.0、IETester【免费·exe】

    这是我最先用的测试浏览器兼容性的工具,想必也是大家用的最多的一个,IETester是一个免费的Web浏览器调试工具,可以模拟出不同的js引擎来帮助程序员设计效果统一的代码。IETester可以在独立的标签页中开启IE5.5、IE6、IE7,IE8 beta2这4个不同版本的IE。可以方便的解决IE浏览器的兼容问题。

    1.1、SuperPreview【收费·exe】

    最先知道SuperPreview是在微软WebCast的技术创新日的课程上,在SuperPreview中,你可以同时浏览网页在各个版本的IE中的效果。根据微软的介绍,SuperPreview的可用IE版本视系统已安装IE浏览器的版本而定,如果系统安装了IE8,那SuperPreview浏览器测试可用版本就包括IE8、IE7和IE6;如果系统安装了IE7,那SuperPreview只包括IE7和IE6;如果系统安装了IE6,那SuperPreview只能测试IE6。

     

     不过,Microsoft Expression Web 3向所有浏览器敞开了大门,这里有篇不错的文章。大家可以了解下。

     1.2、Adobe Browserlab【在线测试】

    Adobe突然宣布关闭桌面浏览器测试服务BrowserLab

    【据外媒报道,Adobe公司忽然宣布将关闭旗下的桌面浏览器测试服务平台BrowserLab,建议用户可以选择使用BrowserStack和Sauce Labs来代替Adobe Browserlab】

    Adobe Browserlab是Adobe出品的在线测试工具,基于flash开发。支持FF,IE等多种浏览器,使用之前首先需要注册。

    图中则是FF和Safari的测试。

    1.3、BrowserStack【在线测试】

    提到BrowserStack提供虚拟化服务。大多数开发者,当他们听到的是“虚拟机”,就认为这不是一种很好的方法,因为虚拟机需要宝贵的磁盘空间和系统资源,并且大多数开发者厌恶运行它们。 BrowserStack采取一种不同的方法,利用Adobe Flash在自己的浏览器提供了一个虚拟浏览器。你不需要安装任何真实的虚拟浏览器。

    bs-nettuts-page

    这是非常强大的功能,最关键的就是要在你的浏览器做的。当然你不局限在操作系统或浏览器版本选择。browserstack提供虚拟化为:

    • Windows XP, 7 and 8
    • OSX Snow Leopard, Lion and Mountain Lion
    • iOS
    • Android
    • Opera Mobile

    bs-oses

    是的,他们提供移动浏览器的虚拟化。我们在一个移动的世界,所以我期望的不多。根据你选择的操作系统,BrowserStack提供了一些特定的操作系统支持的浏览器,在某些情况下,包括测试版和nightlies。

    除了操作系统和浏览器的选项,你可以选择你喜欢的屏幕分辨率测试,这是特别有用的,它可以检查网站页面的布局。开发者也可以登录http://www.browserstack.com/responsive监测你的网站在不同的分辨率下显示。

    BrowserStack是如何工作的

    第一步你需要注册,BrowserStack是一个需要付费的服务,我认为是非常合理的定价,你可以得到一大堆更多的功能。 一旦你注册和登录,你就可以在仪表盘看到一些快速启动栏了~

    你可以直接输入需要测试的网址,然后选择操作系统和浏览器,直接进行测试。

    这里需要强调的是,你看到的测试页面,不是一个网页截图也不是一个假的进程。是可以直接访问的站点,包括菜单,按钮等等。也包括可以试用浏览器自带的开发工具,比如IE的F12,Chrome的开发工具。

    所以你不仅能看到你的网页呈现在浏览器里的样子,也可以使用现有的工具来调试常见问题。很酷!

    在本地使用BrowserStack

    BrowserStack提供了一个隧道功能,允许您远程测试本地页面。它采用Java Applet作为代理基于云计算的服务,在您的目录或Web服务器。这意味着你将需要安装Java,而我更倾向于在这种情况下,不建议安装的Java浏览器插件,但是这是一个必要和有价值的。 在browserstack仪表板中,您应该会看到一个标题为“本地测试”的两个按钮标记为“Web隧道”和“命令行”。 

     “网络隧道”选项,利用了Java applet来建立您的计算机和远程服务之间的隧道。这可以在文件系统级别上,在那里你可以选择一个特定的目录您的网页或本地服务器的URL(例如:本地主机)。为了说明这一点,我已经安装了WAMP的我的电脑上有一个本地网络服务器,与BrowserStack使用。 WAMP的默认情况下,也可通过安装phpMyAdmin的:http://localhost:81/phpmyadmin/ 我使用端口81为不与另一个进程我运行冲突。点击“网络隧道”选项打开如下对话框让你知道程序加载:

    因为Oracle工作在安全的Java上,尤其是他们的浏览器插件,你应该提示运行小程序。我的建议是绝不允许任何未签名的小程序,从一个网站到你的电脑上运行,所以我总是将我的Java安全性设置为“高”。还有一个选项,称为“非常高”,可以防止browserstack程序从远程连接。

      

    一旦运行applet,你会出现一个对话框,询问您当地的服务器的地址或文件夹。

    正如你可以看到,我进入我的本地URL,它检测到的端口号。如果您需要,您也可以使用SSL。在这里我能看到我的BrowserStack远程服务器上的本地副本的phpMyAdmin。

     现在,如果你不想在浏览器或因某些原因不能使用Java小应用程序,您可以使用“命令行”选项,你需要下载一个。JAR文件称为通过命令行来建立连接:

    java -jar BrowserStackTunnel.jar  localhost,3000,0

    在会是一个BrowserStack的访问键,你必须输入。一旦建立连接后,你再返回到仪表板,开始测试。就我个人而言,我更喜欢小程序的方法因为它很简单。

    1.4、Sauce Labs【在线】

     Sauce Labs是一个提供自动化功能测试的云测试服务公司。

    其提供两种服务,Sauce Scout是手工测试的工具,用户可以选择操作系统和浏览器版本,然后就能拿到一台VM进行手工测试了;Sauce OnDemand是自动化测试服务,用户在本地写好脚本,然后脚本是运行在他们的云里面。

    Sauce OnDemand:如果你之前写过Selenium【Selenium也是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建衰退测试检验软件功能和用户需求。支持自动录制动作和自动生成。Net、Java、Perl等不同语言的测试脚本。Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。】的测试脚本,那迁移到Sauce OnDemand的成本是很低的,只需要把本地的webdriver(接下来都会以自动化测试工具WebDriver做例子)改成他们的remote driver就ok了。我是直接用的他们提供的example脚本:https://saucelabs.com/docs/ondemand/getting-started/env/python/se2/mac

    跑完脚本以后看结果,这里才是重点。每跑一次任务,在他们的系统里面都会生成一个Job,这个Job所包含的信息相当详细:

    • Build,如果你是通过CI系统来发起一次自动化测试的话,可以把Build的版本号记到Job里面
    • Tags,这次跑的是Smoke还是Full的测试呢?是一个RC版本还是Live版本
    • Custom Data,以上简单的信息都满足不了你的需求,可以自己传一个JSON格式的对象进去

    测试出错怎么办?一切都在云?

    • 视频回放功能 – 这个太好了,可以看看失败的测试当时是怎么跑的
    • Log – 每一个操作都有Log,用什么方法拿到一个元素,输入了些什么东西
    • 截图 – 某些操作会带有截图,也很有用

    而且这些Log和Video都是可以下载的。

    以上就是Sauce OnDemand的简单介绍,那可能有人会说,这样的功能,我自己的本地跑测试就可以了,为什么还要花钱搞到云里面去?把自动化测试并行起来!

    假如执行1个自动化测试用例需要1分钟;覆盖10个平台+浏览器,串行执行就需要10分钟。假如并行执行,只需要1分钟就完成了。听起来很有吸引力吧。这里有一个用Python并行执行测试大概例子(不完整,没有真的调用测试,但是演示了如何进行并行):https://gist.github.com/511658 更多其他语言的并行测试例子:http://saucelabs.com/blog/index.php/tag/parallel-testing/

    以上讲了那么多,貌似我说的是在测试“外网”站点啊!我不想先发布后测试,我要测试内网站点,怎么办?他们有个Sauce Connect可以搞定这个问题:) 另外还有一些API让用户获取测试结果。

    总结:Sauce Labs提供了针对Selenium实施自动化测试的云服务,和别的云服务有点不一样,他们没有号称使用他们的服务可以降低成本

    1.5、Browsershots【在线】

    使用地址:http://browsershots.org/

    这是一个在线测试工具,支持很多浏览器。

    输入www.cnblogs.com测试一下:

    相对前几个测试工具,个人感觉这个显得稍微逊色了一些。 

     

    展开全文
  • 各种浏览器兼容性

    2011-12-06 17:04:09
    各种浏览器兼容性,各个浏览器的独特属性
  • Web前端开发,PC端,移动H5端,常见浏览器兼容性问题汇总,浏览器兼容性问题汇总-web前端-html-css
  • web兼容性测试必知内容,浏览器内核原理和兼容性,欢迎下载。
  • setTimeout和setInterval的浏览器兼容性分析
  • 在处理浏览器兼容性问题之前,我们先来看一下现在的浏览器市场份额是怎样的,:backhand_index_pointing_down:下面是来自statCounter的数据,基本上覆盖了全世界浏览器市场份额的统计,而且前端er经常使用的caniuse所...
  • 要是两年前,实现“兼容性的渐变效果”这个说法估计不会被提出来的,那个时候,说起渐变背景,想到的多半是IE的渐变滤镜,其他浏览器尚未支持,但是,在对CSS3支持日趋完善的今天,实现兼容性的渐变背景效果已经完全...
  • 确定浏览器测试类型,需要关注的测试项目.确定浏览器测试类型,需要关注的测试项目
  • CSS浏览器兼容性学习

    2010-04-27 16:25:24
    CSS浏览器兼容性学习,解决IE5,IE6,IE7,firefox之间的兼容性问题。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 307,566
精华内容 123,026
关键字:

兼容性好的浏览器