2024年9月typescript前端面试题(web前端面试题@二(Keeplive、V-show和v-if的区别、同源策略及跨域))
⑴typescript前端面试题(web前端面试题二(Keeplive、V-show和v-if的区别、同源策略及跨域
⑵web前端面试题二(Keeplive、V-show和v-if的区别、同源策略及跨域
⑶在vue中,我们使用ponent内置组件或者vue-router切换视图的时候,由于vue会主动卸载不使用的组件,所以我们不能保存组件之前的状态,而我们经常能遇到需要保存之前状态的需求,例如:搜索页(保存搜索记录,列表页(保存之前的浏览记录等等。????????????Keep-alive是一个vue的内置组件,它能将不活动的组件保存下来,而不是直接销毁,当我们再次访问这个组件的时候,会先从keep-alive中存储的组件中寻找,如果有缓存的话,直接渲染之前缓存的,如果没有的话,再加载对应的组件。????????????作为抽象组件,keep-alive是不会直接渲染在DOM中的。????????Keep-alive提供了三种可选属性????????Include-字符串或数组或正则表达式。只有名称匹配的组件被缓存。????????Exclude-字符串或数组或正则表达式。名称匹配的组件不会被缓存。????????Max-数字类型。表示最多可以缓存多少组件实例。????????Keep-alive提供了两个生命钩子,分别是activated与deactivated。????????因为Keep-alive会将组件保存在内存中,并不会销毁以及重新创建,所以不会重新调用组件的created等方法,需要用activated与deactivated这两个生命钩子来得知当前组件是否处于活动状态。????????V-show有较高的渲染成本,????????V-if有较高的切换成本。????????V-if是真正的条件渲染,确保切换过程中条件内的事件监听器和子组件适当的被销毁和重建。????????V-show的元素始终被渲染并保存在dom中,操作的只是display属性控制演示影藏。????????源(origin——就是协议、域名和端口号。若地址里面的协议、域名和端口号均相同则属于同源。????????同源策略——同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。所以a.下的js脚本采用ajax读取b.里面的文件数据是会报错的。????不受同源策略限制的????????????.页面中的链接,重定向以及表单提交是不会受到同源策略限制的。????????????.跨域资源的引入是可以的。但是js不能读写加载的内容。如嵌入到页面中的《scriptsrc=等。???跨域——只要协议、域名、端口号有一个不同就是跨域。????跨域的原因?(只做了解跨域问题来源于JavaScript的同源策略,即只有协议+主机名+端口号(如存在)相同,则允许相互访问。为了防止某域名下的接口被其他域名下的网页非法调用,是浏览器对JavaScript施加的安全限制。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题,比如a标签、script标签、甚至form标签(可以直接跨域发送数据并接收数据等。????、Jsonp——????????????????利用script标签可跨域的特点,在跨域脚本中可以直接回调当前脚本的函数。jsonp是一种常用的跨域手段,和反向代理,服务端做跨域处理相比,jsonp更显得方便轻巧?jsonp的缺点只能发送get请求。因为script只能发送get请求需要后台配合。此种请求方式应该前后端配合,将返回结果包装成callback(result)的形式。????、Cors——????????????????服务器设置HTTP响应头中Aess-Control-Allow-Origin值,解除跨域限制。CORS是一个WC标准,全称是“跨域资源共享“(Cross-originresourcesharing,他允许浏览器向跨源服务器发送XMLHttpRequest请求,从而克服AJAX只能同源使用的限制????????????????缺点是:目前所有最新浏览器都支持该功能,但是万恶的IE不能低于Aess-Control-Allow-Origin这个字段是必须的,表示接受那些域名的请求(*为所有)、Aess-Control-Allow-Credentials该字段可选,表示是否可以发送cookie、Aess-Control-Expose-Headers该字段可选,XHMHttpRequest对象的方法只能够拿到六种字段:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma,如果想拿到其他的需要使用该字段指定。????、反向代理(ReverseProxy{前端独立就能解决的跨域方案}——????指以代理服务器来接受inter上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给inter上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
⑷经典的Web前端或者JavaScript面试笔试题有哪些
⑸不定项选择题(每题分,共分.声明一个对象,给它加上name属性和show方法显示其name值,以下代码中正确的是(DA.varobj=;B.varobj={name:”zhangsan”,show:”alert(this.name)”};C.varobj={name:”zhangsan”,show:function(){alert(name);}};D.varobj={name:”zhangsan”,show:function(){alert(this.name);}};.以下关于Array数组对象的说法不正确的是(CDA.对数组里数据的排序可以用sort函数,如果排序效果非预期,可以给sort函数加一个排序函数的参数B.reverse用于对数组数据的倒序排列C.向数组的最后位置加一个新元素,可以用pop方法D.unshift方法用于向数组删除第一个元素.要将页面的状态栏中显示“已经选中该文本框”,下列JavaScript语句正确的是(AA.window.status=”已经选中该文本框”B.document.status=”已经选中该文本框”C.window.screen=”已经选中该文本框”D.document.screen=”已经选中该文本框”.点击页面的按钮,使之打开一个新窗口,加载一个网页,以下JavaScript代码中可行的是(ADA.《inputtype=”button”value=”new”onclick=”open(‘new.html’,‘_blank’)”/》B.《inputtype=”button”value=”new”onclick=”window.location=’new.html’;”/》C.《inputtype=”button”value=”new”onclick=”location.assign(‘new.html’);”/》D.《formtarget=”_blank”action=”new.html”》《inputtype=”submit”value=”new”/》《/form》.使用JavaScript向网页中输出《h》hello《/h》,以下代码中可行的是(BDA.《scripttype=”text/javascript”》document.write(《h》hello《/h》);《/script》B.《scripttype=”text/javascript”》document.write(“《h》hello《/h》”);《/script》C.《scripttype=”text/javascript”》《h》hello《/h》《/script》D.《h》《scripttype=”text/javascript”》document.write(“hello”);《/script》《/h》.分析下面的代码:《html》《head》《scripttype=”text/javascript”》functionwriteIt(value){document.myfm.first_text.value=value;}《/script》《/head》《bodybgcolor=”#ffffff”》《formname=”myfm”》《inputtype=”text”name=”first_text”》《inputtype=”text”name=”second_text”》《/form》《/body》《/html》以下说法中正确的是(CDA.在页面的第二个文本框中输入内容后,当鼠标离开第二个文本框时,第一个文本框的内容不变B.在页面的第一个文本框中输入内容后,当鼠标离开第一个文本框时,将在第二个文本框中复制第一个文本框的内容C.在页面的第二个文本框中输入内容后,当鼠标离开第二个文本框时,将在第一个文本框中复制第二个文本框的内容D.在页面的第一个文本框中输入内容后,当鼠标离开第一个文本框时,第二个文本框的内容不变.下面的JavaScript语句中,(D实现检索当前页面中的表单元素中的所有文本框,并将它们全部清空A.for(vari=;i《form.elements.length;i++){if(form.elements.type==”text”)form.elements.value=”“;}B.for(vari=;i《document.forms.length;i++){if(forms.elements.type==”text”)forms.elements.value=”“;}C.if(document.form.elements.type==”text”)form.elements.value=”“;D.for(vari=;i《document.forms.length;i++){for(varj=;j《document.forms.elements.length;j++){if(document.forms.elements.type==”text”)document.forms.elements.value=”“;}}.在表单(form)中有一个文本框元素(fname),用于输入电话号码,格式如:-,要求前位是,紧接一个“-”,后面是位数字。要求在提交表单时,根据上述条件验证该文本框中输入内容的有效性,下列语句中,(A能正确实现以上功能A.varstr=form.fname.value;if(str.substr(,)!=”-”||str.substr().length!=||isNaN(parseFloat(str.substr())))alert(“无效的电话号码!”);B.varstr=form.fname.value;if(str.substr(,)!=”-”&&str.substr().length!=&&isNaN(parseFloat(str.substr())))alert(“无效的电话号码!”);C.varstr=form.fname.value;if(str.substr(,)!=”-”||str.substr().length!=||isNaN(parseFloat(str.substr())))alert(“无效的电话号码!”);D.varstr=form.fname.value;if(str.substr(,)!=”-”&&str.substr().length!=&&!isNaN(parseFloat(str.substr())))alert(“无效的电话号码!”);.关于正则表达式声明位数字的邮编,以下代码正确的是(CA.varreg=/d/;B.varreg=d{};C.varreg=/d{}/;D.varreg=newRegExp(“d{}”);.关于JavaScript里的xml处理,以下说明正确的是(BCDA.Xml是种可扩展标记语言,格式更规范,是作为未来html的替代B.Xml一般用于传输和存储数据,是对html的补充,两者的目的不同C.在JavaScript里解析和处理xml数据时,因为浏览器的不同,其做法也不同D.在IE浏览器里处理xml,首先需要创建ActiveXObject对象二、问答题.列举浏览器对象模型BOM里常用的至少个对象,并列举window对象的常用方法至少个(分对象:Windowdocumentlocationscreenhistorynavigator方法:Alert()confirm()prompt()open()close().简述列举文档对象模型DOM里document的常用的查找访问节点的方法并做简单说明(分Document.getElementById根据元素id查找元素Document.getElementByName根据元素name查找元素Document.getElementTagName根据指定的元素名查找元素三、程序题、补充按钮事件的函数,确认用户是否退出当前页面,确认之后关闭窗口;(分《html》《head》《scripttype=”text/javascript”》functioncloseWin(){//在此处添加代码if(confirm(“确定要退出吗?”)){window.close();}}《/script》《/head》《body》《inputtype=”button”value=”关闭窗口”onclick=”closeWin()”/》《/body》《/html》、写出简单描述html标签(不带属性的开始标签和结束标签的正则表达式,并将以下字符串中的html标签去除掉(分varstr=“《div》这里是div《p》里面的段落《/p》《/div》”;//《scripttype=”text/javascript”》varreg=/《/?w+/?》/gi;varstr=“《div》这里是div《p》里面的段落《/p》《/div》”;alert(str.replace(reg,”“));《/script》、完成foo()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框。(分《html》《head》《metahttp-equiv=”Content-Type”content=”text/html;charset=utf-″/》《/head》《body》《scripttype=”text/javascript”》functionfoo(){//在此处添加代码varrdo=document.form.radioGroup;for(vari=;i《rdo.length;i++){if(rdo.checked){alert(“您选择的是第”+(i+)+”个单选框”);}}}《/script》《body》《formname=”form″》《inputtype=”radio”name=”radioGroup”/》《inputtype=”radio”name=”radioGroup”/》《inputtype=”radio”name=”radioGroup”/》《inputtype=”radio”name=”radioGroup”/》《inputtype=”submit”/》《/form》《/body》《/html》、完成函数showImg(),要求能够动态根据下拉列表的选项变化,更新图片的显示(分《body》《scripttype=”text/javascript”》functionshowImg(oSel){//在此处添加代码varstr=oSel.value;document.getElementById(“pic”).src=str+”.jpg”;}《/script》《imgid=”pic”src=”img.jpg”width=”″height=”″/》《br/》《selectid=”sel”》《optionvalue=”img“》城市生活《/option》《optionvalue=”img“》都市早报《/option》《optionvalue=”img“》青山绿水《/option》《/select》《/body》
⑹前端面试题之解决浏览器兼容性的方案
⑺浏览器兼容性涉及的内容有很多,特别是针对IE浏览器,以下整理出五种常见的浏览器兼容性解决方法。
⑻由于各大浏览器会有自身的默认样式,并且不尽相同,所以为了尽可能的保证样式的统一性,前端在开发项目之前都会先进行样式格式化,最常见的分为以下几个方面。
⑼pandding值和margin值均设置为
⑽将html、body、a、li、ol、input、textarea、select、button等标签的padding值和margin值设置为。
⑾设置统一的字体,如果使用rem单位,则html需要设置合适的字号。
⑿设置统一的颜色,将text-decoration属性设置为none。
⒀list-style统一设置为none。
⒁input、textarea、select、button等标签初始化
⒂border设置为none;
⒃根据需要设置颜色和背景色。
⒄使用不同类型的浏览器内核前缀
⒅Chrome(谷歌浏览器与Safari(苹果浏览器内核:Webkit(中译无前缀:-webkit-
⒆IE(IE浏览器内核:Trident(中译三叉戟前缀:-ms-
⒇Firefox(火狐浏览器内核:Gecko(中译壁虎前缀:-moz-
⒈Opera(欧朋浏览器内核:Presto(中译迅速前缀:-o-
⒉-webkit-border-radius:px;/谷歌浏览器/-ms-border-radius:px;/IE浏览器/-moz-border-radius:px;/火狐浏览器/-o-border-radius:px;/欧朋浏览器/border-radius:px;三、针对IE浏览器不同版本的解决方案
⒊对于低版本的IE浏览器使用CSShack(即给特点前缀
⒋注:以下符号是写在属性名前面。
⒌兼容IE的hack符号:-或_
⒍兼容IE、的hack符号:`~!#$%^&*()+=|《》,.任意一个符号
⒎兼容IE、、的hack符号:.
⒏注:以下符号是写在属性值与分号直接,中间不留空格。
⒐兼容IE的hack符号:/
⒑兼容IE、、的hack符号:
⒒兼容IE、、、、的hack符号:
⒓/hack符号在前/_border-radius:px;/IE/+border-radius:px;/IE/.border-radius:px;/IE/
⒔/hack符号在后/border-radius:px/;/IE/border-radius:px;/IE/border-radius:px;/IE/.为不同的版本编写独立的样式,其他浏览器识别不到。
⒕例:大于IE的浏览器使用这个单独的style.css样式
⒖例:只有IE浏览器使用的style.css样式
⒗cursor属性的hand值和pointer值
⒘问题:firefox浏览器不支持hand值,但其他浏览器均支持pointer值。解决:统一使用cursor属性的pointer值。
⒙问题:IE及IE以下版本浏览器不可通过设置margin:auto实现水平居中。
⒚解决:可通过设置父级text-align:center实现。
⒛属性值“inherit”
问题:IE及IE以下版本浏览器不支持属性值“inherit”。
解决:谨慎使用属性值“inherit”。
问题:IE不支持箭头函数、class语法等(报SCRIPT:语法错误,不支持Set和Map数据结构(不报错及Promise对象,支持let和const,IE及以下不支持任何ES语法。
解决:如果要兼容IE浏览器的项目请使用ES语法或者使用Babel进行转换。
问题:IE及IE以下版本浏览器,不能操作tr标签的innerHTML属性。
解决:可以操作td标签的innerHTML属性。
问题:IE及IE以下版本浏览器无法使用Ajax获取接口数据。
解决:在使用Ajax请求之前设置jQuery.support.cors=true。
event对象的srcElement属性
问题:IE及IE以下版本浏览器event对象只有srcElement属性,没有target属性。
解决:obj=event.target?event.target:event.srcElement。
问题:IE及IE以下版本浏览器是用attachEvent()方法,而其他浏览器是addEventListener()方法。
解决:判断IE浏览器版本,如果是IE及以下事件绑定则使用attachEvent()方法,注意attachEvent()方法的用法,第一个参数为“onclick”而不是“click”。并且没有第三个参数。
有哪些经典的Web前端或者JavaScript面试笔试题
HTML、CSS部分.htmlCSS有哪些新特性、移除了那些元素?如何处理HTML新标签的浏览器兼容问题?如何区分HTML和HTML?HTML现在已经不是SGML的子集,主要是关于图像,位置,存储,地理定位等功能的增加。*绘画canvas元素用于媒介回放的video和audio元素本地离线存储localStorage长期存储数据,浏览器关闭后数据不丢失;sessionStorage的数据在浏览器关闭后自动删除语意化更好的内容元素,比如article、footer、header、nav、section表单控件,calendar、date、time、email、url、searchCSS实现圆角,阴影,对文字加特效,增加了更多的CSS选择器多背景rgba新的技术webworker,websockt,Geolocation移除的元素纯表现的元素:basefont,big,center,font,s,strike,tt,u;对可用性产生负面影响的元素:frame,frameset,noframes;*是IE/IE/IE支持通过document.createElement方法产生的标签,可以利用这一特性让这些浏览器支持HTML新标签,浏览器支持新标签后,还需要添加标签默认的样式:*当然最好的方式是直接使用成熟的框架、使用最多的是htmlshim框架《!--》《script》src=的适用场景高并发、聊天、实时消息推送.WEB应用从服务器主动推送Data到客户端有那些方式?htmlwebsoketWebSocket通过FlashXHR长时间连接XHRMultipartStreaming不可见的Iframe《script》标签的长时间连接(可跨域)
前端面试题(JS篇(上
(水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯特朗数。水仙花数是指一个位数,它的每个位上的数字的次幂之和等于它本身例如:~+~+~=(质数就是在大于的自然数中,除了和它本身以外不在有其他因数的自然数)a:,b:AAAnullBundefinedC“hello”D“world”A“llowo“B“llow“C“llo“DnullA“llowo“B“llow“C“llo“DnullAgetYear(BgetMonth(CgetDay(DgetDate(A基于对象B移动端优先C事件驱动D跨平台AStringBFloatumberDNullA任意单个字符B任意单个字母C任意单个字母、数字、下划线D任意单个字母、数学、下划线、$符号A《javascript》B《script》C《scripting》D《js》Avars=’heloe’Bvarn=Cvarx=document.getElementsByTagName(’box’)Dvary=document.querySelectorAll(’ulli’)Adocument.createElementBdocument.createTextNodeCdocument.getElementByIdBdocument.querySelectorAele.innerTextBele.innerHTMLCele.textContentDele.htmlContent插入排序的算法描述的是一种简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序的数据,在已排序序列中从后向前扫描,找到对应位置并插入A.对数组里数据的排序可以用sort函数,如果排序效果非预期,可以给sort函数加一个排序的参数B.reverse用于对数组数据的倒序排列C.向数组的最后位置加一个新元素,可以用pop方法D.unshift方法用于向数组删除第一个元素A.window.status=“已经选中该文本框“B.document.status=’已经选中该文本框’C.window.screen=’已经选中该文本框’D.document.screen=’已经选中该文本框’A《inputtype=“button“value=“new“onclick=“open(’new.html’,’_blank’)“/》B.《inputtype=“button“value=“new“onclick=“window.location=’new.html’“/》C.《inputtype=“button“value=“new“onclick=“location.assign(’new.html)“》D.《formtarget=“_blank“action=“new.html“》《inputtype=“submit“value=“new“/》《/form》A.《scripttype=“text/javascript“》document.write(《h》hello《/h》)《/script》B.《scripttype=“text/javascript“》document.write(“《h》hello《/h》“)《/script》C.《scripttype=“text/javascript“》《h》hello《/h》《/script》D.《h》《scripttype=“text/javascript“》document.write(“hello“)《/script》《/h》以下说法中正确的是(ADA.在页面的第二个文本框中输入内容后,当目标离开第二个文本框时,第一个文本框的内容不变B.在页面的第一个文本框中输入内容后,当鼠标离开第一个文本框时,将在第二个文本框中复制第一个文本框的内容C.在页面的第二个文本框中输入内容后,当鼠标离开第二个文本框时候,将在第一个文本框中复制第二个文本框的内容D.在页面的第一个文本框中输入内容后,当鼠标离开第一个文本框时,第二个文本框的内容不变
前端面试的H问题有哪些
前端面试的H问题汇总:.HTML为什么只需要写《!DOCTYPEHTML》?答案解析:HTML不基于SGML,因此不需要对DTD进行引用,但是需要DOCTYPE来规范浏览器的行为(让浏览器按照他们应该的方式来运行而HTML.基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。、行内元素有哪些?块级元素有哪些?空(void)元素有那些?答案解析:行内元素:abspanimginputselectstrong块级元素:divulollidldtddhhhhp等空元素:《br》《hr》《img》《link》《meta》、页面导入样式时,使用link和import有什么区别?答案解析:link属于XHTML标签,而import是css提供的;页面被加载时,link会同时被加载,而import引用的css会等到页面被加载完再加载;import只在IE以上才能识别,而link是XHTML标签,无兼容问题;link方式的样式的权重高于import的权重。、html有哪些新特性、移除了那些元素?如何处理HTML新标签的浏览器兼容问题?答案解析:新特性,新增元素:内容元素:article、footer、header、nav、section表单控件:calendar、date、time、email、url、search控件元素:webworker,websockt,Geolocation移除元素:显现层元素:basefont,big,center,font,s,strike,tt,u性能较差元素:frame,frameset,noframes处理兼容问题有两种方式:IE/IE/IE支持通过document方法产生的标签,利用这一特性让这些浏览器支持HTML新标签。使用是htmlshim框架另外,DOCTYPE声明的方式是区分HTML和HTML标志的一个重要因素,此外,还可以根据新增的结构,功能元素来加以区分。、如何区分HTML和HTML?答案解析:在文档类型声明上不同:HTML是很长的一段代码,很难记住,而HTML却只有简简单单的声明,方便记忆。在结构语义上不同:HTML:没有体现结构语义化的标签,通常都是这样来命名的《divid=“header“》《/div》,这样表示网站的头部。HTML:在语义上却有很大的优势。提供了一些新的标签,比如:《header》《article》《footer》、简述一下你对HTML语义化的理解?答案解析:用正确的标签做正确的事情;html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;即使在没有样式css情况下也以一种文档格式显示,并且是容易阅读的;搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO;使于都源代码的人对网站更容易将网站分块,便于阅读维护理解。、HTML的离线储存怎么使用,工作原理能不能解释一下?答案解析:localStorage长期存储数据,浏览器关闭后数据不丢失;sessionStorage数据在浏览器关闭后自动删除。、iframe有那些缺点?答案解析:在网页中使用框架结构最大的弊病是搜索引擎的“蜘蛛”程序无法解读这种页面;框架结构有时会让人感到迷惑,页面很混乱;、Doctype作用?严格模式与混杂模式如何区分?它们有何意义?答案解析:《!Doctype》声明位于文档中的最前面,处于《html》标签之前。告知浏览器的解析器,用什么文档类型规范来解析这个文档。严格模式的排版和JS运作模式是以该浏览器支持的最高标准运行。在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作。DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现。、常见兼容性问题?png位的图片在IE浏览器上出现背景;解决方案是:做成PNG;浏览器默认的margin和padding不同。解决方案是:加一个全局的*{margin:;padding:;}来统一。IE双边距bug:块属性标签float后,又有横行的margin情况下,在IE显示margin比设置的大。浮动IE产生的双倍距离#box{float:left;width:px;margin:px;}这种情况下IE会产生px的距离。解决方法:加上_display:inline,使浮动忽略IE下,可以使用获取常规属性的方法来获取自定义属性,也可以使用getAttribute()获取自定义属性;Firefox下,只能使用getAttribute()获取自定义属性。解决方法:统一通过getAttribute()获取自定义属性。IE下,even对象有x,y属性,但是没有pageX,pageY属性,但是没有x,y属性;解决方法:(条件注释缺点是在IE浏览器下可能会增加额外的HTTP请求数。Chrome中文界面下默认会将小于px的文本强制按照px显示解决方法:可通过加入CSS属性-webkt-text-size-adjust:none;解决超链接访问过后hover样式就不出现了,被点击访问过的超链接样式不在具有hover和active;解决方法:改变CSS属性的排列顺序:L-V-H-A:a:link{}a:visited{}a:hover{}a:active{}、如何实现浏览器内多个标签页之间的通信?答案解析:调用localste、cookies等本地存储方式、webSocket如何兼容低浏览器?答案解析:AdobeFlashSocket、ActiveXHTMLFile(IE)、基于multipart编码发送XHR、基于长轮询的XHR、支持HTML新标签答案解析:IE/IE/IE支持通过document.createElement方法产生的标签,可以利用这一特性让这些浏览器支持HTML新标签,浏览器支持新标签后,还需要添加标签默认的样式;当然最好的方式是直接使用成熟的框架、使用最多的是htmlshim框架《!--》《script》src=那么px=.em,px=.em、浏览器的内核分别是什么?答案解析:IE:trident内核Firefox:gecko内核Safari:webkit内核Opera:以前是presto内核,Opera现已改用GoogleChrome的Blink内核Chrome:Blink(基于webkit,Google与OperaSoftware共同开发)