定位绝好方法——苹果关闭更新提示示关闭其他客户端

腾讯TIM怎么用 腾讯TIM使用方法介绍
时间: 10:08:50来源:作者:佚名(0)
腾讯全新推出了一款针对办公场景的IM客户端――TIM,官方页面介绍TIM是轻聊的QQ,更方便办公。腾讯TIM在QQ轻聊版的基础上加入了协同办公服务的支持,而且腾讯TIM可使用QQ号登录,好友、消息完全同步,支持多人在线编辑Word、Excel文档等。
TIM的界面比较简洁,继承了QQ轻聊版的风格:▲TIM“消息”、“联系人”和“我”三大界面▲个人主页与聊天界面腾讯TIM的主要特点:- 简洁的操作界面,轻量易用- QQ号登录,好友、消息完全同步- 支持多人在线编辑Word、Excel文档- 支持Web网页查看,还能导出文档- 免费的音视频通话- 支持多人通话,及会议预定  腾讯TIM的功能介绍:  沟通:支持手机电脑多平台,多端消息漫游同步。  联系人:QQ登录后,联系人全同步,还可以将部分不常用联系人隐藏。  在线文档:可以多人在线编辑Word文档和Excel表格。  日程:创建日程,安排事务,还能做会议邀请。  邮件:收发邮件无压力,还可以收非QQ邮箱的邮件。  文件传输:使用QQ底层技术,传文件,快!  电话会议:异地沟通?用TIM打个电话吧。  收藏:有用的文字、图片和链接等都能收藏进来。  腾讯TIM怎么样?  tim是一款更方便办公的QQ,tim手机版是由腾讯官方推出的全新办公聊天软件,tim在线是一个高效、无广告、清爽的聊天协作工具,tim移动在线支持协作文档在线编辑、免费视频、音频电话等功能,通过tim,想聊就聊,不用注册账号直接用qq号就能登录使用。腾讯新推出的qq客户端TIM,具有完整的通讯功能,几乎去掉了所有的无用功能,可以说是一个无广告简洁版的QQ。是腾讯专为办公设计的,腾讯tim具备我们常用的功能,而且还有多人在线共享文档功能。腾讯tim软件的亮点是没有各种烦人的弹窗(PC版),如:腾讯新闻、提示安装电脑管家等其它弹窗在聊天界面也没有广告,所以这款QQ是腾讯良心之作,如果你常用PC的QQ,那腾讯tim你绝对值得一试。对于办公室一族来说,TIM正式版就是一个内置各种神奇工具的让工作更高效的QQ工作版,对于普通用户来说,TIM正式版就是零广告并且聊天记录全平台同步的QQ纯净版。简单来说,腾讯TIM 正式版就是一个保留工作必备功能的QQ超级纯净版。去掉QQ秀、QQ空间等一切娱乐性的功能,保留对工作真正有用而且是刚需的功能,保留QQ上的人脉,这才是我们办公一族想要的TIM。  腾讯TIM最新动态  tim最新版主要是在“日程”方面进行了改进,比如在聊天界面点击日程时,可以新建日程和分享我的日程、日程界面支持周视图展示等。另外,更新还精简代码,缩减安装包大小,屏蔽了送礼物等功能和动画。  毫无疑问,当下中小企业的一个显著变化就是摆脱了纸质化办公环境,进入了云和移动办公时代。对不能自建或者购买大型网上办事平台的中小企业来说,使用特定的办公软件成了唯一的选择。  在开辟企业客户这条道路上,腾讯已经探索了很久,轻聊版QQ和TM便是铺路石,今年腾讯所力推tim,便是要在以往的经验上再次发力。  据悉,不同于轻聊版QQ和TM,开发tim的团队在腾讯内部有更高的地位和更强的资源调度能力,产品一经推出就广受关注和好评,深究原因,根本还是在于其很好地满足了企业办公需求。  总体来说,更新版的tim有“更简约”、“更协同”两大优点。  tim脱胎于QQ,为了让tim更符合办公需求,只保留了QQ上的办公功能。具体来看:  保留了电话会议、文件传送、日程、收藏等与工作相关的功能。  聊天对话框更加简洁,不同时出现聊天框和QQ页面。  精简了公众号模块,订阅号和服务号、购物号等不适用于办公的模块已去除。  采用了简约风格的界面设计,默认的页面是蓝底黑字,风格较为严肃认真。  一句话来讲,tim优化了以往QQ所包含的丰富的娱乐功能,更简约的功能设计能够有效地提高工作者的专注力和创造力。  这个出发点也是这款产品被命名为TIM的原因(TIM是Tencent Instant Messenger的缩写),TIM的官网更是直接用了office.qq.com的域名,可见腾讯对tim的定位就已经明确在办公领域。腾讯TIM怎么用?  腾讯tim使用教程【PC篇】腾讯TIM 是&Tencent Instant Messenger&的缩写,官网更是用到了office.qq.com的域名,可见腾讯对TIM的定位就已经明确在办公领域。腾讯TIM正式版的新功能很多,其中在线文档功能让同事之间可以在线编辑word文档或者Excel文档,甚至无需打开电脑,在手机TIM上就能直接修改。而聊天记录多终端同步简直就是小编的最爱,再也不用担心没有SVIP超级会员就无法享受QQ聊天记录全平台同步漫游的超级福利。还有代收邮件、不常用联系人隐藏、日程、收藏、传文件超快的文件传输功能就不一一简单举例,请大家接着看详细介绍吧。1、聊天记录手机电脑全平台同步用过QQ的都知道,QQ只有SVIP超级会员才支持所有人全平台聊天记录同步。而现在完全免费使用的TIM 正式版也支持聊天记录多终端同步,这消息不得不说让小编感觉幸福来得太突然。可以说,有了TIM正式版,以后再也不担心在QQ电脑版上接收了聊天记录,在移动端上就看不到的窘况出现。TIM正式版的聊天记录全平台同步功能,相信没有人是拒绝的吧?2、支持多人在线编辑Word或Excel对于大多数办公一族而言,每天接触最多的文件莫过于Office的Word、Excel等文档。而TIM 正式版的在线文档功能,堪称是办公一族最贴心的功能,原因有3个,第一是原因是在线文档功能支持在线即时保存,就算电脑突然间爆炸,1秒之前的数据不敢保证能还原,但1分钟之前的数据肯定有记录;第二个原因支持多人编辑,再也不用担心来回收发的文件太多搞错文档;第三个原因是只有手机TIM在,哪怕没有电脑我也能瞬间修改Word文档。或许在TIM正式版发布之后,可能会有一部分人再也不装Office软件了。当然,目前TIM的在线文档功能还不支持导入本地的Office文档,算是一个遗憾,但或许不久之后,这个遗憾就再也没有任何遗憾了。--------------------------------  小贴士:tim在线文档怎么用?  在线文档,一份在线编辑、实时保存的文档,还可以轻松邀请好友来一起协作编辑。以下是一些 线文档使用小技巧:  一、PC篇  1、在线编辑,实时保存  在线编辑,告别繁重的office软件;实时保存,不用担心编辑丢失。  2、将文档分享给好友  点击分享,将文档链接发送给好友。  3、与好友共同编辑  进入文档的好友,可以与你一起编辑文档。  二、移动篇  1、随手编辑,实时保存  手机编辑,无需安装其他软件;实时保存,不用担心编辑丢失。  2、轻松分享到QQ、微信  点击分享,可将文档分享给QQ好友、微信好友和微信朋友圈。  3、与好友共同编辑  进入文档的好友,可以与你一起编辑文档。  至此,在线文档使用技巧已get,想知道老司机如何玩转在线表格吗?  欢迎开启在线文档之旅,在日常工作和生活中很多场景可以用到在线表格,例如:--------------------------------3、代收非QQ邮箱邮件不是事TIM说白了就是QQ的另一种形态,自然也能想QQ那样能接收QQ邮箱中的邮件。而现在的TIM更强大,直接可以在TIM 正式版 移动端上添加其他邮箱,从而代收其他邮箱的邮件。TIM正式版支持代收其他邮箱有了TIM正式版,就可以管理其他邮箱,某种意义上省了退出聊天窗口,重新登录其他邮件APP的步骤。4、隐藏不常用的联系人TIM可以完美同步QQ上的联系人,但QQ定位是陌生人社交,而TIM是定位熟人网络的工作社交,因此如果TIM上全都是陌生人就不好办了。也因此TIM正式版的不常用联系人隐藏功能应办公一族的需求而诞生。TIM正式版可以让你将不想隐藏的好友和同事或者陌生人全部隐藏起来在TIM正式版手机版中点击隐藏不常用联系人一栏,就可以将不常联系的QQ好友全部隐藏起来,只保留最常联系的好友。有了这么一个设定,在TIM上看到的,都是你经常联系的人,再也不用浪费时间在找人上。--------------------------------小贴士:tim怎么加好友?主要就是寻找在tim聊天工具中添加好友的功能在哪里。点击右下角tim图标打开界面,点击如图下所示功能按钮。弹出按钮功能列表,如图下所示选择加好友功能。添加好友进入正常的qq加好友界面,输入好友q号,或者通过其他条件来寻找。添加好友并输入验证信息,将好友分组,若无验证信息即可成功加上好友。--------------------------------5、文件互传快到飞起TIM正式版的文件快传功能是移植自QQ,使用的也是QQ底层技术,传文件的特点可以用一个字来形容,快!TIM正式版传文件的速度只有一个字可以形容,快!TIM正式版支持面对面免流量传文件无论是你手机文件传电脑,还是电脑文件传手机,或者是手机文件互传,都只能用一个字来形容,快!具体怎么快法,大家可以自行体验,小编就不多说了。6、支持会议邀请的日程功能作为定位办公的TIM,怎么可以少得了日程功能。这日程功能如果用得简单点,就是一个闹钟提醒功能,用得高逼格点,就是一个时间一到就自动邀请与会者去开会的超级日程功能。简单举例,我想明天下午3点开会,然后我在日程里加好要开会的同事,到了明天3点前就自动在TIM移动端或者PC端通知大家马上要开会啦!这日程功能,你说好不好用?7、无处不在的收藏功能TIM的收藏功能其实跟QQ的收藏功能大同小异,一样能收藏声音、图片、视频、Office文档、压缩包等各种文件。收藏对于上班的小编来说,领导交代的东西,我一般都顺手收藏,那这样每次想找的时候无需疯狂翻聊天记录。收藏功能是TIM正式版不可或缺的一个功能而且收藏的东西是在线同步的,无论TIM移动端还是PC端或者是QQ上都能直接看到,超级使用的一个功能。除此之外,TIM不仅能直接和QQ好友通话,还开通了手机通讯录导入路径,可以多种方式选择电话沟通。同时,TIM还将QQ看点和空间隐藏起来,有需求的用户可以个性化选择进入看点及空间,很好的避免了无关消息推送频繁的困扰。8、体验感受体验完TIM 正式版之后,不得不感概,终于等到TIM你出现了!这才是我等蜗居在办公室的用户想要的QQ版本。去掉QQ秀、QQ空间等一切娱乐性的功能,保留对工作真正有用而且是刚需的功能,保留QQ上的人脉,这才是我们办公一族想要的TIM。TIM正式版,是否你的菜?可能体验过才有答案。腾讯tim使用教程【移动篇】从腾讯TIM移动版这款应用的功能和界面来看,腾讯tim基本上就是一个商务范儿的QQ。一、安装:熟悉的节奏1、下载腾讯TIM安装包,点击安装,由于是腾讯官方的apk,因此安全性应该不成问题,所以一路“继续”即可。2、安装好后,进入应用先选择登录或是新用户注册,这都是老套路,小编就不再赘述。二、上手:别样的经典登录账号后,可以看到消息界面大体上和普通QQ差不多,只是没有了左上角的头像(个人设置),而这一类似功能被移至右下角传统QQ“动态”的位置。另外应用主色调变为了简单的黑白色,没有普通版五颜六色主题的加持。这种设计可能更好和老板交代你上班在干什么……1、批量整理不常用好友和同事聊天功能小编就不再多说,实在不会自己找周围的老司机们带一下就全明白了。值得注意的是,在联系人界面(依旧是纯黑白,专治色狼……额,色盲)可以看到搜索栏下面多了一条“批量整理不常用好友和同事”的选项,点击上图红框进入后是这样滴:首先是选择不常联系的好友,把要处理的好友打钩之后,点击“下一步”进入不常用群的清理界面,群的清理和好友相同,打钩之后点击“完成”即可。经过这些操作后,“联系人”搜索栏下方不会再出现“批量整理”的选项,以后想整理的话在“联系人”最下方点击蓝色的“不常用联系人”即可增删好友。2、协作文档协作文档在“我”页面体现,里面可以建立文字处理和电子表格文档(类似于Word和Excel),如果需要协助可以通过分享链接的方式邀请QQ与微信、朋友圈、微博好友加入,如下图:文档编辑方法不用多说,用过Office的人应该都会,而且TIM中的协作文档编辑功能目前还比较简单,掌握起来更容易。3、邮件和日程邮件功能和普通版QQ差不多,但多了其他邮箱的提醒功能,用户可以把自己除QQ邮箱之外的邮箱添加到TIM邮件中,让TIM作为邮件客户端,这种设计体现了TIM办公通讯客户端的特点。日程功能可以添加日程提醒,包括时间、地点、人物等。这项功能对于商务人士来说并不陌生,TIM也没有标新立异,上手很容易。--------------------------------小贴士:tim空间在哪?tim怎么看空间?在手机上找到安装好的Tim图标,点击该图标就可以进入tim登录界面了;登录tim后,在其主界面上点击右下角的“我”标签;这时会打开我标签页面,点击右上角的“设置”按钮,进入TIM设置界面;在TIM的设置页面中,点击“功能”菜单项,就可以进入TIM功能设置页面了;在功能页面中,可以看到已启用的功能以及未启用的功能,在未启用功能中找到“好友动态”菜单项,点击该菜单项;在好友动态详细资料页面,点击下方的“启用”按钮;回到TIM的我标签页面中,就可以看到好友动态的链接了;点击好友动态链接后,就可以看到熟悉的QQ空间了,在这里就可以方便的查看好友发布的动态信息了。--------------------------------三、结语:上班任性聊TIM作为一款工作用客户端,优势在于使用QQ号就可以登录,最大程度的利用了QQ的人脉资源,并且尊重大多数用户的使用习惯,上手很容易,应用过滤掉了QQ的一些过于个性化的功能,加入了工作专用特色功能,让使用者可以专注于工作内容。不过在企业内部联系方面,TIM和同类工具例如钉钉还有些区别,类似于请假、出差、日报等专业工作功能目前并没有体现。也许这些产品定位不同,但作为主打工作的通讯软件来说,基本功能全面一些应该还是有必要的。腾讯TIM和之前的TM2013、QQ轻聊版、国际版等似乎有相似之处,但又有本质不同。TIM不仅是给普通QQ瘦身,更是增加了“肌肉”,比如协作文档、邮件和日程等,这既做到了轻聊,又能够为提高工作效率添砖加瓦,让用户在上班的时候也能“任性聊QQ”。不过目前应该还是早期版本,功能还不完善,也许今后TIM还会加入更多功能,小编也将继续关注这款应用的发展。移动前端的一些坑和解决方法(外观表现)-前端开发博客 最新文章
推荐文章 2414Views 4843Views 1280Views 5159Views 3953Views热门文章
24,748Views
8,990Views
2,564Views
2,057Views
2,023Views
1,880Views查看更多相关吗?百度搜索:移动电源外观设计移动电源外观设计说明移动屏蔽网站解决方法什么是前端开发移动端前端开发基坑外观检查");&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
一些小知识
摘要:css和html面试题css和html1.你怎么来实现页面设计图,你认为前端应该如何高质量完成工作?一个满屏品字布局如何设计?首先划分成头部、body、脚部实现效果图是最基本的工作,精确到2px,设计师,产品经理的沟通和项目的参与,做好的页面结构,页面重构和用户体验,处理hack,兼容、写出优美的代码格式,针对服务器的优化、拥抱HTML52.知道css有个content属性吗?有什么作用?有什么应用?css的content属性专门应用在before/after伪元素上,用来插
css 和 html面试题
css 和 html
1.你怎么来实现页面设计图,你认为前端应该如何高质量完成工作? 一个满屏 品 字布局 如何设计?
首先划分成头部、body、脚部
实现效果图是最基本的工作,精确到2px,设计师,产品经理的沟通和项目的参与,做好的页面结构,页面重构和用户体验,处理hack,兼容、写出优美的代码格式,针对服务器的优化、拥抱 HTML5
2.知道css有个content属性吗?有什么作用?有什么应用?
css的content属性专门应用在 before/after 伪元素上,用来插入生成内容。最常见的应用是利用伪类清除浮动
//一种常见利用伪类清除浮动的代码
.clearfix:after {
content:&.&; //这里利用到了content属性
visibility:
.clearfix {
==after伪元素通过 content 在元素的后面生成了内容为一个点的块级素,再利用clear:both清除浮动。那么问题继续还有,知道css计数器(序列数字字符自动递增)吗?如何通过css content属性实现css计数器?css计数器是通过设置counter-reset 、counter-increment 两个属性 、及 counter()/counters()一个方法配合after / before 伪类实现==
3.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么?
1.IE:trident
2.Firefox:gecko
3.Safari:webkit
4.Opera:以前是presto内核,Opera现在改用Google Chrome 的 Bink内核
5.Chrome:Bink(基于webkit,Google 与Opera Software共同开发)
4.每个HTML文件里开头都有个很重要的东西,Doctype,知道这是干什么的吗
声明位于文档中的最前面的位置,处于 标签之前。此标签可告知浏览器文档使用哪种 HTML 或 XHTML 规范。(重点:告诉浏览器按照何种规范解析页面)
5.Quirks模式是什么?它和Standards模式有什么区别
从IE6开始,引入了Standards模式,标准模式中,浏览器尝试给符合标准的文档在规范上的正确处理达到在指定浏览器中的程度。
在IE6之前CSS还不够成熟,所以IE5等之前的浏览器对CSS的支持很差, IE6将对CSS提供更好的支持,然而这时的问题就来了,因为有很多页面是基于旧的布局方式写的,而如果IE6 支持CSS则将令这些页面显示不正常,如何在即保证不破坏现有页面,又提供新的渲染机制呢
在写程序时我们也会经常遇到这样的问题,如何保证原来的接口不变,又提供更强大的功能,尤其是新功能不兼容旧功能时。遇到这种问题时的一个常见做法是增加参数和分支,即当某个参数为真时,我们就使用新功能,而如果这个参数 不为真时,就使用旧功能,这样就能不破坏原有的程序,又提供新功能。IE6也是类似这样做的,它将DTD当成了这个“参数”,因为以前的页面大家都不会去写DTD,所以IE6就假定 如果写了DTD,就意味着这个页面将采用对CSS支持更好的布局,而如果没有,则采用兼容之前的布局方式。这就是Quirks模式(怪癖模式,诡异模式,怪异模式)
总体会有布局、样式解析和脚本执行三个方面的区别。
盒模型:在W3C标准中,如果设置一个元素的宽度和高度,指的是元素内容的宽度和高度,而在Quirks 模式下,IE的宽度和高度还包含了padding和border
设置行内元素的高宽:在Standards模式下,给等行内元素设置wdith和height都不会生效,而在quirks模式下,则会生效
设置百分比的高度:在standards模式下,一个元素的高度是由其包含的内容来决定的,如果父元素没有设置百分比的高度,子元素设置一个百分比的高度是无效的用
margin:0 auto设置水平居中:使用margin:0 auto在standards模式下可以使元素水平居中,但在quirks模式下却会失效
6.div+css的布局较table布局有什么优点
改版的时候更方便,只要改css文件
页面加载速度更快、结构化清晰、页面显示简洁
表现与结构相分离
易于优化(seo)搜索引擎更友好,排名更容易靠前
7.img的alt与title有何异同? strong与em的异同
a:alt(alt text):为不能显示图像、窗体或applets的用户代理(UA),alt属性用来指定替换文字。替换文字的语言由lang属性指定。(在IE浏览器下会在没有title时把alt当成 tool tip显示)
title(tool tip):该属性为设置该属性的元素提供建议性的信息
strong:粗体强调标签,强调,表示内容的重要性
em:斜体强调标签,更强烈强调,表示内容的强调点
8.你能描述一下渐进增强和优雅降级之间的不同吗
渐进增强 progressive enhancement:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。 优雅降级 graceful degradation:一开始就构建完整的功能,然后再针对低版本浏览器进行兼容
==区别:==优雅降级是从复杂的现状开始,并试图减少用户体验的供给,而渐进增强则是从一个非常基础的,能够起作用的版本开始,并不断扩充,以适应未来环境的需要。降级(功能衰减)意味着往回看;而渐进增强则意味着朝前看,同时保证其根基处于安全地带
“优雅降级”观点 “优雅降级”观点认为应该针对那些最高级、最完善的浏览器来设计网站。而将那些被认为“过时”或有功能缺失的浏览器下的测试工作安排在开发周期的最后阶段,并把测试对象限定为主流浏览器(如 IE、Mozilla 等)的前一个版本
在这种设计范例下,旧版的浏览器被认为仅能提供“简陋却无妨 (poor, but passable)” 的浏览体验。你可以做一些小的调整来适应某个特定的浏览器。但由于它们并非我们所关注的焦点,因此除了修复较大的错误之外,其它的差异将被直接忽略。
“渐进增强”观点则认为应关注于内容本身。内容是我们建立网站的诱因。有的网站展示它,有的则收集它,有的寻求,有的操作,还有的网站甚至会包含以上的种种,但相同点是它们全都涉及到内容。这使得“渐进增强”成为一种更为合理的设计范例。这也是它立即被 Yahoo! 所采纳并用以构建其“分级式浏览器支持 (Graded Browser Support)”策略的原因所在
9.为什么利用多个域名来存储网站资源会更有效
CDN缓存更方便
突破浏览器并发限制
节约cookie带宽
节约主域名的连接数,优化页面响应速度 + 防止不必要的安全问题
10.请谈一下你对网页标准和标准制定机构重要性的理解
网页标准和标准制定机构都是为了能让web发展的更‘健康’,开发者遵循统一的标准,降低开发难度,开发成本,SEO也会更好做,也不会因为滥用代码导致各种BUG、安全问题,最终提高网站易用性
11.简述一下src与href的区别
src用于替换当前元素,href用于在当前文档和引用资源之间确立联系
src是source的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;在请求src资源时会将其指向的资源下载并应用到文档内,例如js脚本,img图片和frame等元素
当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将js脚本放在底部而不是头部
href是Hypertext Reference的缩写,指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,如果我们在文档中添加
那么浏览器会识别该文档为css文件,就会并行下载资源并且不会停止对当前文档的处理。这也是为什么建议使用link方式来加载css,而不是使用@import方式
12.知道的网页制作会用到的图片格式有哪些
png-8,png-24,jpeg,gif,svg
但是上面的那些都不是面试官想要的最后答案。面试官希望听到是Webp。(是否有关注新技术,新鲜事物) 科普一下Webp:WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式。图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器带宽资源和数据空间。Facebook Ebay等知名网站已经开始测试并使用WebP格式。 在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%
13.知道什么是微格式吗?谈谈理解。在前端构建中应该考虑微格式吗
微格式(Microformats)是一种让机器可读的语义化XHTML词汇的集合,是结构化数据的开放标准。是为特殊应用而制定的特殊格式
==优点==:将智能数据添加到网页上,让网站内容在搜索引擎结果界面可以显示额外的提示。(应用范例:豆瓣,有兴趣自行google)
14.你如何理解HTML结构的语义化
去掉或样式丢失的时候能让页面呈现清晰的结构: html本身是没有表现的,我们看到例如是粗体,字体大小2em,加粗;是加粗的,不要认为这是html的表现,这些其实html默认的css样式在起作用,所以去掉或样式丢失的时候能让页面呈现清晰的结构不是语义化的HTML结构的优点,但是浏览器都有有默认样式,默认样式的目的也是为了更好的表达html的语义,可以说浏览器的默认样式和语义化的HTML结构是不可分割的。
屏幕阅读器(如果访客有视障)会完全根据你的标记来“读”你的网页
例如,如果你使用的含语义的标记,屏幕阅读器就会“逐个拼出”你的单词,而不是试着去对它完整发音
PDA、手机等设备可能无法像普通电脑的浏览器一样来渲染网页(通常是因为这些设备对CSS的支持较弱)
使用语义标记可以确保这些设备以一种有意义的方式来渲染网页.理想情况下,观看设备的任务是符合设备本身的条件来渲染网页
语义标记为设备提供了所需的相关信息,就省去了你自己去考虑所有可能的显示情况(包括现有的或者将来新的设备).例如,一部手机可以选择使一段标记了标题的文字以粗体显示.而掌上电脑可能会以比较大的字体来显示.无论哪种方式一旦你对文本标记为标题,您就可以确信读取设备将根据其自身的条件来合适地显示页面.
搜索引擎的爬虫也依赖于标记来确定上下文和各个关键字的权重 + 过去你可能还没有考虑搜索引擎的爬虫也是网站的“访客”,但现在它们他们实际上是极其宝贵的用户.没有他们的话,搜索引擎将无法索引你的网站,然后一般用户将很难过来访问
你的页面是否对爬虫容易理解非常重要,因为爬虫很大程度上会忽略用于表现的标记,而只注重语义标记
因此,如果页面文件的标题被标记,而不是,那么这个页面在搜索结果的位置可能会比较靠后.除了提升易用性外,语义标记有利于正确使用CSS和JavaScript,因为其本身提供了许多“钩钩”来应用页面的样式与行为
SEO主要还是靠你网站的内容和外部链接的
便于团队开发和维护 + W3C给我们定了一个很好的标准,在团队中大家都遵循这个标准,可以减少很多差异化的东西,方便开发和维护,提高开发效率,甚至实现模块化开发
16.谈谈以前端角度出发做好SEO需要考虑什么
你需要知道一些搜索引擎的基本工作原理,各个搜索引擎之间的区别,搜索机器人(SE robot 或叫 web crawler)如何进行工作,搜索引擎如何对搜索结果进行排序等等
Meta标签优化:
主要包括主题(Title),网站描述(Description),和关键词(Keywords)。还有一些其它的隐藏文字比如Author(作者),Category(目录),Language(编码语种)等
如何选取关键词并在网页中放置关键词
搜索就得用关键词。关键词分析和选择是SEO最重要的工作之一。首先要给网站确定主关键词(一般在5个上下),然后针对这些关键词进行优化,包括关键词密度(Density),相关度(Relavancy),突出性(Prominency)
了解主要的搜索引擎
虽然搜索引擎有很多,但是对网站流量起决定作用的就那么几个。比如英文的主要有Google,Yahoo,Bing等;中文的有百度,搜狗,有道等。不同的搜索引擎对页面的抓取和索引、排序的规则都不一样。还要了解各搜索门户和搜索引擎之间的关系,比如AOL网页搜索用的是Google的搜索技术,MSN用的是Bing的技术
主要的互联网目录
Open Directory自身不是搜索引擎,而是一个大型的网站目录,他和搜索引擎的主要区别是网站内容的收集方式不同。目录是人工编辑的,主要收录网站主页;搜索引擎是自动收集的,除了主页外还抓取大量的内容页面
按点击付费的搜索引擎
搜索引擎也需要生存,随着互联网商务的越来越成熟,收费的搜索引擎也开始大行其道。最典型的有Overture和百度,当然也包括Google的广告项目Google Adwords。越来越多的人通过搜索引擎的点击广告来定位商业网站,这里面也大有优化和排名的学问,你得学会用最少的广告投入获得最多的点击
搜索引擎登录
网站做完了以后,别躺在那里等着客人从天而降。要让别人找到你,最简单的办法就是将网站提交(submit)到搜索引擎。如果你的是商业网站,主要的搜索引擎和目录都会要求你付费来获得收录(比如Yahoo要299美元),但是好消息是(至少到目前为止)最大的搜索引擎Google目前还是免费,而且它主宰着60%以上的搜索市场
链接交换和链接广泛度(Link Popularity)
网页内容都是以超文本(Hypertext)的方式来互相链接的,网站之间也是如此。除了搜索引擎以外,人们也每天通过不同网站之间的链接来Surfing(“冲浪”)。其它网站到你的网站的链接越多,你也就会获得更多的访问量。更重要的是,你的网站的外部链接数越多,会被搜索引擎认为它的重要性越大,从而给你更高的排名
合理的标签使用
17.有哪项方式可以对一个DOM设置它的CSS样式
外部样式表,引入一个外部css文件
内部样式表,将css代码放在 标签内部
内联样式,将css样式直接定义在 HTML 元素内部
18.CSS都有哪些选择器
派生选择器(用HTML标签申明)
id选择器(用DOM的ID申明)
类选择器(用一个样式类名申明)
属性选择器(用DOM的属性申明,属于CSS2,IE6不支持,不常用,不知道就算了)
后代选择器(利用空格间隔,比如div .a{ })
群组选择器(利用逗号间隔,比如p,div,#a{ })
19.CSS选择器的优先级是怎么样定义的
用1表示派生选择器的优先级
用10表示类选择器的优先级
用100标示ID选择器的优先级
20.CSS中可以通过哪些属性定义,使得一个DOM元素不显示在浏览器可视范围内
设置display属性为none,或者设置visibility属性为hidden
设置宽高为0,设置透明度为0,设置z-index位置在-1000em
21.超链接访问过后hover样式就不出现的问题是什么?如何解决
被点击访问过的超链接样式不在具有hover和active了,解决方法是改变CSS属性的排列顺序: L-V-H-A(link,visited,hover,active)
22.什么是Css Hack?ie6,7,8的hack分别是什么
针对不同的浏览器写不同的CSS code的过程,就是CSS hack
height:300
background-color:
/*firefox*/
background-color:red/9;
/*all ie*/
background-color:
+background-color:
_background-color:
:root #test { background-color:purple/9; }
@media all and (min-width:0px)
{ #test {background-color:} }
@media screen and (-webkit-min-device-pixel-ratio:0)
{ #test {background-color:} }
/*chrome and safari*/
23.行内元素和块级元素的具体区别是什么?行内元素的padding和margin可设置吗
块级元素(block)特性
总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显示;宽度(width)、高度(height)、内边距(padding)和外边距(margin)都可控制
内联元素(inline)特性
和相邻的内联元素在同一行
宽度(width)、高度(height)、内边距的top/bottom(padding-top/padding-bottom)和外边距的top/bottom(margin-top/margin-bottom)都不可改变(也就是padding和margin的left和right是可以设置的),就是里面文字或图片的大小
浏览器还有默认的天生inline-block元素(拥有内在尺寸,可设置高宽,但不会自动换行),有哪些
、 、 、 、
24.什么是外边距重叠?重叠的结果是什么
外边距重叠就是margin-collapse
在CSS当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距。这种合并外边距的方式被称为折叠,并且因而所结合成的外边距称为折叠外边距
折叠结果遵循下列计算规则
两个相邻的外边距都是正数时,折叠结果是它们两者之间较大的值
两个相邻的外边距都是负数时,折叠结果是两者绝对值的较大值
两个外边距一正一负时,折叠结果是两者的相加的和
25.rgba()和opacity的透明效果有什么不同
rgba()和opacity都能实现透明效果,但最大的不同是opacity作用于元素,以及元素内的所有内容的透明度
而rgba()只作用于元素的颜色或其背景色。(设置rgba透明的元素的子元素不会继承透明效果!)
26.css中可以让文字在垂直和水平方向上重叠的两个属性是什么
垂直方向:line-height
水平方向:letter-spacing-》可以消除inline-block元素间的换行空格间隙问题
27.如何垂直居中一个浮动元素
// 方法一:已知元素的高宽
background-color:#6699FF;
height:200
//父元素需要相对定位
left: 50%;
margin-top:-100
//二分之一的height,width
margin-left: -100
//方法二:未知元素的高宽
width: 200
height: 200
background-color: #6699FF;
//父元素需要相对定位
bottom: 0;
28.px和em的区别
px和em都是长度单位,区别是,px的值是固定的,指定是多少就是多少,计算比较容易。em得值不是固定的,并且em会继承父级元素的字体大小
浏览器的默认字体高都是16px。所以未经调整的浏览器都符合: 1em=16px。那么12px=0.75em, 10px=0.625em
29.描述一个”reset”的CSS文件并如何使用它。知道normalize.css吗?你了解他们的不同之处
重置样式非常多,凡是一个前端开发人员肯定有一个常用的重置CSS文件并知道如何使用它们。 他们是盲目的在做还是知道为什么这么做呢?原因是不同的浏览器对一些元素有不同的默认样式,如果你不处理,在不同的浏览器下会存在必要的风险,或者更有戏剧性的性发生
你可能会用Normalize来代替你的重置样式文件。它没有重置所有的样式风格,但仅提供了一套合理的默认样式值。既能让众多浏览器达到一致和合理,但又不扰乱其他的东西(如粗体的标题)
在这一方面,无法做每一个复位重置。它也确实有些超过一个重置,它处理了你永远都不用考虑的怪癖,像HTML的audio元素不一致或line-height不一致
30.display:none与visibility:hidden的区别是什么
display : 隐藏对应的元素但不挤占该元素原来的空间
visibility: 隐藏对应的元素并且挤占该元素原来的空间
即是,使用CSS display:none属性后,HTML元素(对象)的宽度、高度等各种属性值都将“丢失”;而使用visibility:hidden属性后,HTML元素(对象)仅仅是在视觉上看不见(完全透明),而它所占据的空间位置仍然存在
31.CSS中link和@import的区别是
Link属于html标签,而@import是CSS中提供的
在页面加载的时候,link会同时被加载,而@import引用的CSS会在页面加载完成后才会加载引用的CSS + @import只有在ie5以上才可以被识别,而link是html标签,不存在浏览器兼容性问题
Link引入样式的权重大于@import的引用(@import是将引用的样式导入到当前的页面中)
32.简介盒子模型
CSS的盒子模型有两种:IE盒子模型、标准的W3C盒子模型模型
盒模型:内容、内边距、外边距(一般不计入盒子实际宽度)、边框
33.为什么要初始化样式
由于浏览器兼容的问题,不同的浏览器对标签的默认样式值不同,若不初始化会造成不同浏览器之间的显示差异
但是初始化CSS会对搜索引擎优化造成小影响
34.html语义化是什么
当页面样式加载失败的时候能够让页面呈现出清晰的结构
有利于seo优化,利于被搜索引擎收录(更便于搜索引擎的爬虫程序来识别)
便于项目的开发及维护,使html代码更具有可读性,便于其他设备解析
35.Doctype的作用?严格模式与混杂模式的区别
用于告知浏览器该以何种模式来渲染文档
严格模式下:页面排版及JS解析是以该浏览器支持的最高标准来执行
混杂模式:不严格按照标准执行,主要用来兼容旧的浏览器,向后兼容
36.IE的双边距BUG:块级元素float后设置横向margin,ie6显示的margin比设置的较大
加入_display:inline
37.HTML与XHTML——二者有什么区别
所有的标记都必须要有一个相应的结束标记
所有标签的元素和属性的名字都必须使用小写
所有的 XML 标记都必须合理嵌套
所有的属性必须用引号 “” 括起来
把所有 & 和 &; 特殊符号用编码表示
给所有属性赋一个值
不要在注释内容中使用 “–”
图片必须有说明文字
38.html常见兼容性问题
双边距BUG float引起的 使用display
3像素问题 使用float引起的 使用dislpay:inline -3px
超链接hover 点击后失效 使用正确的书写顺序 link visited hover active
Ie z-index问题 给父级添加position:relative
Png 透明 使用js代码 改
Min-height 最小高度 !Important 解决’
select 在ie6下遮盖 使用iframe嵌套
为什么没有办法定义1px左右的宽度容器(IE6默认的行高造成的,使用over:hidden,zoom:0.08 line-height:1px)
IE5-8不支持opacity, .opacity {
opacity: 0.4
filter: alpha(opacity=60); /* for IE5-7 */
-ms-filter: &progid:DXImageTransform.Microsoft.Alpha(Opacity=60)&; /* for IE 8*/
IE6不支持PNG透明背景,解决办法: IE6下使用gif图片
39.对WEB标准以及W3C的理解与认识
标签闭合、标签小写、不乱嵌套、提高搜索机器人搜索几率、使用外 链css和js脚本、结构行为表现的分离、文件下载与页面速度更快、内容能被更多的用户所访问、内容能被更广泛的设备所访问、更少的代码和组件,容易维 护、改版方便,不需要变动页面内容、提供打印版本而不需要复制内容、提高网站易用性
40.Doctype作用? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义
声明位于文档中的最前面,处于 标签之前。告知浏览器的解析器,用什么文档类型 规范来解析这个文档
严格模式的排版和 JS 运作模式是 以该浏览器支持的最高标准运行
在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点无法工作
DOCTYPE不存在或格式不正确会导致文档以混杂模式呈现
41.CSS的盒子模型
两种, IE 盒子模型、标准 W3C 盒子模型;IE 的content部分包含了 border 和 pading
盒模型: 内容(content)、填充(padding)、边界(margin)、 边框(border)
42.如何居中div,如何居中一个浮动元素
思路:元素定位top:50%,left:50%,然后在margin-top和margin-left 它自身高度的一半就行
方案2:使用css3的transltae(-50%,-50%),然后left:50%,top:50%
43.列出display的值,说明他们的作用
block 象块类型元素一样显示
none 缺省值。向行内元素类型一样显示
inline-block 象行内元素一样显示,但其内容象块类型元素一样显示
list-item 象块类型元素一样显示,并添加样式列表标记
44.position的值, relative和absolute定位原点是
absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位
fixed (老IE不支持): 生成绝对定位的元素,相对于浏览器窗口进行定位
relative: 生成相对定位的元素,相对于其正常位置进行定位
static:默认值。没有定位,元素出现在正常的流中
(忽略 top, bottom, left, right z-index 声明)
inherit 规定从父元素继承 position 属性的值
45.absolute的containing block计算方式跟正常流有什么不同
lock-level boxes,一个 block-level element (‘display’ 属性值为 ‘block’, ‘list-item’ 或是 ‘table’) 会生成一个 block-level box,这样的盒子会参与到 block-formatting context (一种布局的方式) 中。
block formatting context,在这种布局方式下,盒子们自所在的 containing block 顶部起一个接一个垂直排列,水平方向上撑满整个宽度 (除非内部的盒子自己内部建立了新的 BFC)。
containing block:一般来说,盒子本身就为其子孙建立了 containing block,用来计算内部盒子的位置、大小,而对内部的盒子,具体采用哪个 containing block 来计算,需要分情况来讨论:
若此元素为 inline 元素,则 containing block 为能够包含这个元素生成的第一个和最后一个 inline box 的 padding box (除 margin, border 外的区域) 的最小矩形; 否则则由这个祖先元素的 padding box 构成。 根元素所在的 containing block 被称为 initial containing block,在我们常用的浏览器环境下,指的是原点与 canvas 重合,大小和 viewport 相同的矩形; 对于 position 为 static 或 relative 的元素,其 containing block 为祖先元素中最近的 block container box 的 content box (除 margin, border, padding 外的区域); 对于 position:fixed 的元素,其 containing block 由 viewport 建立; 对于 position:absolute 的元素,则是先找到其祖先元素中最近的 position 属性非,static 的元素,然后判断:
如果都找不到,则为 initial containing block。
1.CSS3有哪些新特性
CSS3 实现圆角(border-radius),阴影(box-shadow)
对文字加特效(text-shadow),线性渐变(gradient),旋转(transform)
transform:rotate(9deg)、scale(0.85,0.90)、translate(0px,10px)、skew(-9deg,0deg);-&旋转,缩放、定位、倾斜
增加了更多的CSS选择器,多背景 raba
在CSS3 中唯一引入的伪元素是 ::selection.
媒体查询,多栏布局
border-image
2.html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
拖拽释放(Drag and drop) API
语义话更好的内容标签-&header,nav,footer,aside,article,section
音频、视频API(audio,video)
画布(canvas)API
地理(Geoloca)
本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失
sessionStorage 的数据在浏览器关闭后自动删除
表单控件,calendar、date、time、email、url、search
新的技术webworker, websocket, Geolocation
移除的元素
纯表现的元素:basefont,big,center,font, s,strike,tt,u
对可用性产生负面影响的元素:frame,frameset,noframes
支持 HTML5 新标签
IE8/IE7/IE6支持通过 document.createElement 方法产生的标签,可以利用这一特性让这些浏览器支持 HTML5 新标签,浏览器支持新标签后,还需要添加标签默认的样式(当然最好的方式是直接使用成熟的框架、使用最多的是html5shim框架)
&!--[if lt IE 9]& &script& src=&http://html5shim.googlecode.com/svn/trunk/html5.js&&/script& &![endif]--&
如何区分: DOCTYPE声明新增的结构元素、功能元素
3.本地存储(Local Storage)和cookies(储存在用户本地终端上的数据)之间的区别是什么?
Cookies:服务器和客户端都可以访问;大小只有4KB左右;有有效期,过期后将会删除; 本地存储:只有本地浏览器端可访问数据,服务器不能访问本地存储直到故意通过POST或者GET的通道发送到服务器;每个域5MB;没有过期数据,它将保留知道用户从浏览器清除或者使用Javascript代码移除
4.如何实现浏览器内多个标签页之间的通信?
调用 localstorge、cookies 等本地存储方式
5.什么是响应式设计?
它是关于网页制作的过程中让不同的设备有不同的尺寸和不同的功能。响应式设计是让所有的人能在这些设备上让网站运行正常
6.新的 HTML5 文档类型和字符集是?
HTML5文档类型:&!doctype html&
HTML5使用的编码&meta charset=”UTF-8”&
7.HTML5 Canvas 元素有什么用?
Canvas 元素用于在网页上绘制图形,该元素标签强大之处在于可以直接在 HTML 上进行图形操作。
8.HTML5 存储类型有什么区别?
Media API、Text Track API、Application Cache API、User Interaction、Data Transfer API、Command API、Constraint Validation API、History API
9.CSS3新增伪类有那些?
p:first-of-type 选择属于其父元素的首个
元素的每个
p:last-of-type 选择属于其父元素的最后
元素的每个
p:only-of-type 选择属于其父元素唯一的
元素的每个
p:only-child 选择属于其父元素的唯一子元素的每个
p:nth-child(2) 选择属于其父元素的第二个子元素的每个
:enabled、:disabled 控制表单控件的禁用状态
:checked,单选框或复选框被选中
10.请描述一下cookies,sessionStorage和localStorage的区别?
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的
web storage和cookie的区别
Web Storage的概念和cookie相似,区别是它是为了更大容量存储设计的。Cookie的大小是受限的,并且每次你请求一个新的页面的时候Cookie都会被发送过去,这样无形中浪费了带宽,另外cookie还需要指定作用域,不可以跨域调用。 除此之外,Web Storage拥有setItem,getItem,removeItem,clear等方法,不像cookie需要前端开发者自己封装setCookie,getCookie。但是Cookie也是不可以或缺的:Cookie的作用是与服务器进行交互,作为HTTP规范的一部分而存在 ,而Web Storage仅仅是为了在本地“存储”数据而生
11.如何在 HTML5 页面中嵌入音频
HTML 5 包含嵌入音频文件的标准方式,支持的格式包括 MP3、Wav 和 Ogg
&audio controls&
&source src=&jamshed.mp3& type=&audio/mpeg&&
Your browser does'nt support audio embedding feature.
12.如何在 HTML5 页面中嵌入视频
和音频一样,HTML5 定义了嵌入视频的标准方法,支持的格式包括:MP4、WebM 和 Ogg
&video width=&450& height=&340& controls&
&source src=&jamshed.mp4& type=&video/mp4&&
Your browser does'nt support video embedding feature. &/video&
13.HTML5 引入什么新的表单属性
Datalist datetime output keygen date month week time number range emailurl
14.cookie在浏览器和服务器间来回传递,sessionStorage和localStorage区别
sessionStorage和localStorage的存储空间更大
sessionStorage和localStorage有更多丰富易用的接口
sessionStorage和localStorage各自独立的存储空间
移动端开发
1.移动端常用类库及优缺点
2.Zepto库和JQ区别
Zepto相对jQuery更加轻量,主要用在移动端,jQuery也有对应的jQuerymobile移动端框架
javascript 基础面试题
1.javascript 的 typeof返回那些数据类型?
object、string、boolean、number、undefined、function
2.列举3种强制类型转换和2种隐式类型转换?
强制:parseInt、parseFloat、Number
隐式:== !!
3.split()、join的区别
split:切割成数组的形式
join:将数组转换成字符串
4.数组方法 pop、push、unshift、shift
push:尾部添加 pop:尾部删除
unshift:头部添加 shift:头部删除
5.事件绑定和普通事件有什么区别?
普通事件的方法
var btn = document.getElementById('hello');
btn.onclick = function(){
alert('hello');
btn.onclick = function(){
alert('2')
//输出 2==执行上面的代码弹窗2==
事件绑定方式添加事件: var btn = document.getElementById('hello'); btn.addEventListener('click',function(){
alert(1); },false) btn.addEventListener('click',function(){
alert(2); },false);==执行上面的代码会先 alert1 再 alert2 普通添加事件的方法不支持添加多个事件,最下面的事件会覆盖上面的,而事件绑定(addEventListener)方式添加事件可以添加多个。addEventListener 不兼容低版本IE,普通事件无法取消,addEventLisntener 还支持事件冒泡+事件捕获==
6.IE 和 DOM 事件流的区别
执行顺序不一样
参数不一样
事件加不加on
this指向问题
7.IE 和标准下有哪些兼容性写法
var ev = ev || window.
document.documentElement.clientWidth || document.body.clientWidth
var target = ev.srcElement || ev.
8.call 和 apply 的区别
语法:call(thisObj,Object1,Object2….);
定义:调用一个对象的一个方法,以另一个对象替换当前对象
说明:cll 方法可以用来代替另一个对象调该对象的方法。call 方法可以将一个函数的对象上下文从初始的上下文改变由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj.
语法:apply(thisObj,[argArray]);
定义:应用某一个对象的一个方法,用另一个对象替换当前对象。
说明:如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj,并且无法被传递任何参数。
9.b 继承 a 的方法
function A( age, name ){
this.age =
this.name =
A.prototype.show = function(){
alert('父级方法');
function B( age , name ,job ){
A.apply(this,arguments);
this.job =
B.prototype = new A();
var b = new A(14,'遐客行');
var a = new B(15,'朗霞','侠客');
10.如何阻止事件冒泡和默认事件
阻止事件冒泡
//阻止事件冒泡
function stopBubble(e){
//如果提供了事件对象,则这是一个非IE浏览器
if ( e &;&; e.stopPropagation ){
//因此它支持W3C的stopPropagation()
e.stopPropagation();
//否则,我们需要使用IE的方式来取消冒泡
window.event.cancelBubble =
阻止事件默认行为
function stopDefault(e){
if ( e &;&; e.preventDefault ){
e.preventDefault();
window.event.returnValue =
11.添加、删除、替换、插入到某个节点的方法
appendChild()、insertBefore、replaceChild、removeChild
12.javascript 的本地对象,内置对象和宿主对象
本地对象为 array obj regexp 等可以new实例化
内置对象为 gload Math 等不可以实例化的
宿主对象为浏览器自带的 document,window 等
13.window.onload 和 document ready 的区别
window.onload 是在 dom 文档树加载完所有文件之后执行一个函数
Document.ready 原生没有这个方法,jquery 中有$().ready(function),在 dom 文档树加载完后执行一个函数(这里的文档树加载完不代表文件加载完)
$(document).ready 要比 window.onload 先执行
window.onload 只能执行一次,$(document).ready 可能出现多次
14.“= =” 和 “===”的不同
前者会自动转换成类型,后者不会
15.javascript 的同源策论
一段脚本只能读取来自同一源的窗口和文档属性,这里的同一个源指的的是主机名、协议和端口号的组合
16.javascript 是一门什么样的语言,它有哪些特点?
javascript 是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为 javascript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 html 网页上使用,用来给html网页增加动态功能。 javascript 兼容于ECMA标准,因此也称为 ECMAscript。
1.是一种解释性脚本语言
主要用来向 HTML 页面添加交互行为
可以直接嵌套 HTML 页面,但写成单独的js 文件有利于结构和行为的分离
跨平台特性,在绝大多数浏览器的支持,可以在多种平台下运行
17.javascript 的数据类型都有什么?
基本数据类型:String,Boolean,Number,undefined,null
引用数据类型:Object(Array,Date,RegExp,Function)
如何判断某变量是否为数组类型?
1.使用数组方法 slice 的方式
2.obj instanceof Array 在某些IE版本中不正确
3.使用 ECMAScript5 中定义的方法 Array.isArray();
4.最好的方法:
if ( typeof Array.isArray === 'undefined' ){
Array.isArray = function(arg){
return Object.prototype.toString.call(arg) === &[object Array]&;
18.希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)
var domList = document.getElementsByTagName(‘input’)
var checkBoxList = [];
var len = domList.//缓存到局部变量
while (len--) {
//使用while的效率会比for循环更高
if (domList[len].type == ‘checkbox’) {
checkBoxList.push(domList[len]);
19.javascript 的事件流模型都有什么?
“事件冒泡”:事件开始由最具体的元素接收,然后逐级向上传播
“事件捕捉”:事件由最不具体的节点接收,然后逐级向下,一直到最具体的
DOM 事件流:三个阶段:事件捕捉、目标阶段、事件冒泡
20.看下列代码输出为何?解释原因
alert(typeof a);//undefind
alert(b);//报错
解释:undefind 是一个只有一个值得数据类型,这个值就是 undefind,在使用 var 声明变量但未对其赋值进行初始化时,这个变量的值就是 undefind 。而 b 由于未声明将报错。
21.看下面代码输出什么?解释原因undefined == // true1 ==
// true2 ==
// false0 ==
// true0 == '';
// trueNaN == NaN;
// false[] == // true[] == ![];
// truevar foo = &11&+2-&1&;console.log(foo);console.log(typeof foo);执行完后foo的值为111,foo的类型为Number。
undefined与null相等,但不恒等(=/=/=) 一个是number一个是string时,会尝试将string转换为number 尝试将boolean转换为number,0或1 尝试将Object转换成number或string,取决于另外一个对比量的类型 所以,对于0、空字符串的判断,建议使用 “=/=/=” 。“/=/=/=”会先判断两边的值类型,类型不匹配时为false。 那么问题来了,看下面的代码,输出什么,foo的值为什么?var foo = &11&+2-&1&;console.log(foo);console.log(typeof foo);
执行完后foo的值为111,foo的类型为Number
22.看代码给答案var a = new Object();a.value = 1;b =b.value = 2;alert(a.value)
答案:2(考察引用数据类型细节)
23.26. 已知数组 var stringArray = [“This”, “is”, “Baidu”, “Campus”],Alert 出 This is Baidu Campus
alert(stringArray.join(“”))
24.27. 已知有字符串 foo=”get-element-by-id”,写一个 function 将其转化成驼峰表示法 ”getElementById”function combo(msg){
var arr=msg.split(&-&);
for(var i=1;i&arr.i++){
arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length-1);
msg=arr.join(&&);
25.var numberArray = [3,6,2,4,1,5](考察基础API)
实现对该数组的倒排,输出[5,1,4,2,6,3]
numberArray.reverse()
实现对该数组的降序排列,输出[6,5,4,3,2,1]
numberArray.sort(function(a,b){return b-a})
26.输出今天的日期,以YYYY-MM-DD的方式,比如今天是日,则输出var d = new Date();// 获取年,getFullYear()返回4位的数字var year = d.getFullYear();// 获取月,月份比较特殊,0是1月,11是12月var month = d.getMonth() + 1;// 变成两位month = month & 10 ? '0' + month :// 获取日var day = d.getDate();day = day & 10 ? '0' + day :alert(year + '-' + month + '-' + day);
27.将字符串”{id}&/td&&td&{name}&/td&&/tr&”中的{id}替换成10,{name}替换成Tony (使用正则表达式)
&tr&&td&{$id}&/td&&td&{$id}_{$name}&/td&&/tr&&.replace(/{/$id}/g, '10').replace(/{/$name}/g, 'Tony')
28.为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数escapeHtml,将&, &, &;, “进行转义function escapeHtml(str) {
return str.replace(/[&&”&;]/g,
function(match) {
switch (match) {
case “&”:
return “&;”;
case “&”:
return “&;”;
case “&;”:
return “&;”;
case “/””:
return “&;”;
29.32. foo = foo||bar ,这行代码是什么意思?为什么要这样写?
if(!foo) foo =如果foo存在,值不变,否则把bar的值赋给foo。 短路表达式:作为”&;&;”和”||”操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程便告终止,这称之为短路求值。
30.看下列代码,将会输出什么?(变量声明提升)
var foo = 1;
(function(){
console.log(foo);
var foo = 2;
console.log(foo);
})()==答案:输出undefined 和 2。上面代码相当于:==
var foo = 1;
(function(){
console.log(foo); //undefined
console.log(foo); // 2;
})()==函数声明与变量声明会被 javscript 引擎隐式地提升到当前作用域的顶部,但是只是提升名称不会提升赋值部分==
31.用 js 实现随机选取 10 - 100 之间的10个数字,存入一个数组,并排序
function randomNub(aArray, len, min, max) {
if (len &= (max - min)) {
return '超过' + min + '-' + max + '之间的个数范围' + (max - min - 1) + '个的总数';
if (aArray.length &= len) {
aArray.sort(function (a, b) {
return a - b
var nowNub = parseInt(Math.random() * (max - min - 1)) + (min + 1);
for (var j = 0; j & aArray. j++) {
if (nowNub == aArray[j]) {
randomNub(aArray, len, min, max);
aArray.push(nowNub);
randomNub(aArray, len, min, max);
var arr = [];
console.log(randomNub(arr, 10, 10, 100));
32.把两个数组合并,并删除第二个元素
var array1 = ['a','b','c'];
var array2 = ['d','e','f'];
var array3 = array1.concat(array2);
array3.splice(1,1);
33.怎样添加、移除、移动、复制、创建和查找节点(原生JS,)
createDocumentFragment():创建新节点,创建一个 DOM 片段
createElement():创建一个具体元素
createTextNode():创建一个文本节点
appendChild():添加节点
removeChild():删除节点
replaceChild():替换节点
insertBefore():插入节点
getElementsByTagName():通过标签名称查找节点
getElementsByName():通过元素的 Name 属性值查找
getElementById():通过元素Id,唯一性
34.有这样一个URL:http://item.taobao.com/item.htm?a=1&;b=2&;c=&;d=xxx&;e,请写一段JS程序提取URL中的各个GET参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中,如{a:’1′, b:’2′, c:”, d:’xxx’, e:undefined}
function serilizeUrl(url) {
var urlObject = {};
if (//?/.test(url)) {
var urlString = url.substring(url.indexOf(&?&) + 1);
var urlArray = urlString.split(&&;&);
for (var i = 0, len = urlArray. i & i++) {
var urlItem = urlArray[i];
var item = urlItem.split(&=&);
urlObject[item[0]] = item[1];
return urlO
serilizeUrl('http://item.taobao.com/item.htm?a=1&;b=2&;c=&;d=xxx&;e');
35.正则表达式构造函数var reg=new RegExp(“xxx”)与正则表达字面量var reg=//有什么不同?匹配邮箱的正则表达式?
答案:当使用RegExp()构造函数的时候,不仅需要转义引号(即/”表示”),并且还需要双反斜杠(即/表示一个/)。使用正则表达字面量的效率更高。
var regMail = /^([a-zA-Z0-9_-])([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/;
36.看下面代码,给出输出结果
for (var i = 1; i &= 3; i++) {
setTimeout(function () {
console.log(i);
==输出:4 4 4== ==原因:Javascript事件处理器在线程空闲之前不会运行。追问,如何让上述代码输出1 2 3?==
for (var i = 1; i &= 3; i++) {
setTimeout((function (a) { //改成立即执行函数
console.log(a);
})(i), 0);
37.写一个function,清除字符串前后的空格。(兼容所有浏览器)
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^/s+/, &&).replace(//s+$/, &&);
// test the function
var str = & /t/n test string &.trim();
alert(str == &test string&); // alerts &true&
38.javascript 中 callee 和 caller 的作用?
caller 是返回一个函数的引用,该函数调用了当前函数
callee 是返回正在被执行的 function 函数,也就是所指定的 function 对象的正文
==那么问题来了!如果一对兔子每月生一对兔子;一对新生兔,从第二个月起就开始生兔子;假定每对兔子都是一雌一雄,试问一对兔子,第n个月能繁殖成多少对兔子?(使用callee完成==
//典型的斐波那契数列
var result = [];
function fn(n) {
if (n == 1) {
} else if (n == 2) {
if (result[n]) {
return result[n];
//argument.callee()表示fn()
result[n] = arguments.callee(n - 1) + arguments.callee(n - 2);
return result[n];
39.Javascript中, 以下哪条语句一定会产生运行错误?A、var _变量=NaN;
B、var 0bj = []; //命名不对,报错,不用以数字开头
C、var obj = //; //运行undefind
D、var obj = {};==答案BC,注意:C在有些浏览器上会报错,chrome运行fundefind ==
40.以下两个变量a和b,a+b的哪个结果是NaN?
A、var a= b=NaN
B、var a= ‘123’; b=NaN
C、var a =undefined , b =NaN
var a=NaN , b='undefined'
41.var a=10; b=20; c=4; ++b+c+a++ 以下哪个结果是正确的?
D、37==答案:B==
42.将页面中所有文本框的表单,并将他们全部清空
for (vari = 0; i & form1.elements. i++) {
if (form1.elements.type == 'text')
form1.elements.value = '';
for (vari = 0; i & document.forms. i++) {
if (forms[0].elements.type == 'text')
forms[0].elements.value = '';
if (document.form.elements.type == 'text')
form.elements.value = '';
for (vari = 0; i & document.forms. i++) {
for (var j = 0; j & document.forms.elements. j++) {
if (document.forms.elements[j].type == 'text')
document.forms.elements[j].value = '';
43.分析代码,得出正确的结果
var a=10, b=20 , c=30;
e=++a+(++b)+(c++)+a++;
alert(e);//77
44.写出函数 DateDemo 的返回结果,系统时间假定为今天
function DateDemo() {
var d, s = &今天日期是:&;
d = new Date();
s += d.getMonth() + 1 + &/&;
s += d.getDate() + &/&;
s += d.getFullYear();
45.写出简单描述html标签(不带属性的开始标签和结束标签)的正则表达式,并将以下字符串中的html标签去除掉
var str = '&div& 这里是div 里面的段落 &/div&';
var reg = /&//?/w+//?&/
alert(str.replace(reg,''));
46.完成foo()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框
function foo() {
//在此处添加代码
var rdo = document.form1.radioG
for (var i = 0; i & rdo. i++) {
if (rdo.checked) {
alert(“您选择的是第” + (i + 1) + ”个单选框”);
//html代码
&form name=”form1″&
&input type=”radio” name=”radioGroup”/&
&input type=”radio” name=”radioGroup”/&
&input type=”radio” name=”radioGroup”/&
&input type=”radio” name=”radioGroup”/&
&input type=”submit”/&
47.列举浏览器对象模型BOM里常用的至少4个对象,并列举window对象的常用方法至少5个
对象:window,document,location,screen,history,navigator
方法:alert(),confirm(),prompt(),open(),close()
48.希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)
var domList = document.getElementsByTagName('input')
var checkBoxList = [];
var len = domList.
//缓存到局部变量
while (len--) {
//使用while的效率会比for循环更高
if (domList[len].type == 'checkbox') {
checkBoxList.push(domList[len]);
49.简述创建函数的几种方式
//第一种(函数声明):
function sum1(num1,num2){
return num1+num2;
//第二种(函数表达式):
var sum2 = function(num1,num2){
return num1+num2;
//第三种(函数对象方式):
//var sum3 = new Function(&num1&,&num2&,&return num1+num2&);
50.iframe 的优缺点
解决加载缓慢的第三方内容如图标和广告等的加载问题
Security sandbox
并行加载脚本
iframe会阻塞主页面的Onload事件
即时内容为空,加载也需要时间
51.请你谈谈Cookie的弊端?
Cookie 数量长度的限制。每个 domain 最多只能有20条cookie,每个cookie长度不能超过 4KB,否则会被截掉
安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了
有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用
52.js延迟加载的方式有哪些?
defer 和 async
动态创建 DOM 方式(创建script,插入到DOM中,加载完毕后callBack)
按需异步载入js
53.哪些操作会造成内存泄漏?
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在
垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为0(没有其他对象引用过该对象),或对该对象的唯一引用是循环的,那么该对象的内存即可回收
setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏
控制台日志
循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)
54.判断一个字符串中出现次数最多的字符,统计这个次数
var str = 'asdfssaaasasasasaa';
var json = {};
for (var i = 0; i & str. i++) {
if (!json[str.charAt(i)]) {
json[str.charAt(i)] = 1;
json[str.charAt(i)]++;
var iMax = 0;
var iIndex = '';
for (var i in json) {
if (json[i] & iMax) {
iMax = json[i];
alert('出现次数最多的是:' + iIndex + '出现' + iMax + '次');
55.写一个获取非行间样式的函数
function getStyle(obj, attr, value) {
if (!value) {
if (obj.currentStyle) {
return obj.currentStyle[attr];
window.getComputedStyle(obj, attr)[value];
obj.style[attr] =
56.事件委托是什么
让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!
57.闭包是什么,有什么特性,对页面有什么影响
我的理解是,闭包就是能够读取其他函数内部变量的函数。在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
function outer() {
var num = 1;
function inner() {
var n = 2;
alert(n + num);
outer()();
58.解释 jsonp 的原理,以及优缺点
动态创建 script 标签,回调函数
Ajax 是页面无刷新请求数据操作
1.它不像 XMLHttpRequest 对象实现的 Ajax 请求那样受到同源策略的限制,JSONP 可以跨越同源策略
2.它的兼容性更好,在更加古老的浏览器中都可以运行,不需要 XMLRequest 或 ActiveX的支持
3.在请求完毕后可以通过调用 Callback 的方式回传结果。将回调方法的权限给了调用方。这个就相当于将 controller 层和 view 层终于分开了。
1.它只支持 GET 请求而不支持 POST 等其他类型的请求
2.它只支持跨域 HTTP 请求这种情况,不能解决不同域的两个页面之间如何进行 javascript 调用问题
3.jsonp 在调用失败的时候不会返回各种 HTTP 状态码
4.安全性。万一假如提供jsonp 的服务器在页面注入漏洞,即它返回的 javascript 的内容被人控制的。那么结果是什么?所有调用这个jsonp 的网站都会存在漏洞。于是无法把危险控制在一个域名下,所有在使用jsonp的时候必须保持使用的jsonp服务器必须是安全可信的
59.字符串反转,如将 ‘’ 变成 ‘
思路:先将字符串转换为数组 split(),利用数组的反序函数 reverse()颠倒数组,再利用 jion() 转换为字符
var str = '';
str = str.split('').reverse().join('');
转化成 RMB形式 如: 12,345,678
function re(str) {
str += '';
return str.split(&&).reverse().join(&&);
function toRMB(num) {
var tmp = '';
for (var i = 1; i &= re(num). i++) {
tmp += re(num)[i - 1];
if (i % 3 == 0 &;&; i != re(num).length) {
tmp += ',';
return re(tmp);
console.log(toRMB(''));
61.生成5个不同的随机数
//思路:5个不同的数,每生成一次就和前面的所有数字相比较,如果有相同的,则放弃当前生成的数字!
var num1 = [];
for (var i = 0; i & 5; i++) {
num1[i] = Math.floor(Math.random() * 10) + 1; //范围是 [1, 10]
for (var j = 0; j & j++) {
if (num1[i] == num1[j]) {
62.去掉数组中重复的数字
//数组去重
var arr = [1, 1, 2, 2, 1, 2, 2, 1, 3, 2, 4, 3, 4, 1, 2, 3, 7, 8, 9];
//需求:根据arr,取出所有不重复的元素[1,2,3,4,7,8,9];
//1 声明结果数组
var resultArr = [arr[0]];//可以先将arr[0]放入到结果数组中(因为结果数组中现在是空的,不可能重复)
//2 获取arr中的每个元素,到resultArr中进行比較,如果在resultArr中不存在arr[i],放入即可
for (var i = 1; i & arr. i++) {
//取出了arr[i],需要与resultArr中每一个元素进行比較,还需要遍历resultArr
for (j = 0; j & resultArr. j++) {
//使用arr[i]与resultArr[j]进行比較,如果每一次比较均不相等,放入即可
//如果有一个项相等,阻止放入,设置假设条件为false
if (arr[i] == resultArr[j]) { //提高效率,找到一个相等的,后面的就没必要看了
//所以,需要在所有的比較完成后,在判断是否放入
if (j == resultArr.length) {
resultArr[resultArr.length] = arr[i];
console.log(resultArr);
//假设成立法:
var num = 4;
//1 检测一个数是不是质数,不太确定是不是,可以通过假设的方式
var flag =
//2 对假设进行要进行验证
for (var i = 2; i &= num / 2; i++) {
//3 找到可以是假设失败的情况
if (num % i == 0) {
//4 假设失败,设置假设条件为false
//可以添加break,单纯的为了减少执行次数,提高效率(可以省略)
//5 根据假设判断是否是质数
if (flag == true) {
alert(&是质数&);
alert(&不是质数&);
64.反转数组
var arr = [1,2,3,4,5,6,7];
var temp=[];
for (var i = arr.length-1; i&=0; i--) {
temp[temp.length] = arr[i];
console.log(temp);
65.冒泡排序
var arr = [1, 2, 3, 5, 4];
//外层循环控制轮数
for (var i = 0; i & arr.length - 1; i++) {
//内层循环控制每一轮的比較次数
for (var j = 0; j & arr.length - 1 - j++) {
//每一次要做的事情,比較当前项和后项的大小
if (arr[j] & arr[j + 1]) {
//交换两个位置的值
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] =
console.log(arr);
var arr = [1, 2, 3, 5, 4];
//外层循环控制轮数
for (var i = 0; i & arr.length - 1; i++) {
//不确定的是,哪一轮的比較是可以结束的(排好了)
//内层循环控制每一轮的比較次数
for (var j = 0; j & arr.length - 1 - j++) {
//每一次要做的事情,比較当前项和后项的大小
if (arr[j] & arr[j + 1]) {
//交换两个位置的值
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] =
//设置假设不成立的条件,如果if被进入,说明排序没有完成
flag =//阻止跳出
//根据flag,验证假设是否成立
if (flag == true) {//==true可以省略,原因是flag本身就是bool值
console.log(arr);
66.window.location.search() 返回的是什么?
查询(参数)部分。除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值
返回值:?ver=1.0&;id=timlq 也就是问号后面的!
67.window.location.hash 返回的是什么?
锚点,返回值:#love
68.javascript 中的垃圾回收机制?
在Javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。如果两个对象互相引用,而不再 被第3者所引用,那么这两个互相引用的对象也会被回收。因为函数a被b引用,b又被a外的c引用,这就是为什么 函数a执行后不会被回收的原因。
69.看代码写结果
function changeObjectProperty(o) {
o.siteUrl = &http://www.csser.com/&;
o = new Object();
o.siteUrl = &http://www.popcg.com/&;
var CSSer = new Object();
changeObjectProperty(CSSer);
console.log(CSSer.siteUrl); //http://www.csser.com/
==如果CSSer参数是按引用传递的,那么结果应该是”http://www.popcg.com/“,但实际结果却仍是”http://www.csser.com/“。事实是这样的:在函数内部修改了引用类型值的参数,该参数值的原始引用保持不变。我们可以把参数想象成局部变量,当参数被重写时,这个变量引用的就是一个局部变量,局部变量的生存期仅限于函数执行的过程中,函数执行完毕,局部变量即被销毁以释放内存。
(补充:内部环境可以通过作用域链访问所有的外部环境中的变量对象,但外部环境无法访问内部环境。每个环境都可以向上搜索作用域链,以查询变量和函数名,反之向下则不能)==
var a = 6;
setTimeout(function(){
var a = 66;
// 666,==异步处理,一切声明提前==
71.什么事同源策略
同协议、端口、域名的安全策略,由王景公司提出来的安全协议!
72.为什么不能定义1px左右的div容器?
IE6下这个问题是因为默认的行高造成的,解决的方法也有很多,例如:
overflow:hidden | zoom:0.08 | line-height:1px
72.计算字符串字节数
new function(s){
if(!arguments.length||!s)
if(&&==s) return 0;
for(var i=0;i&s.i++){
if(s.charCodeAt(i)&255) l+=2; else l+=1;
//charCodeAt()得到的是unCode码
//汉字的unCode码大于 255bit 就是两个字节
}(&hello world!&);
73.请用代码实现 outerHTML
Object.prototype.outerHTML = function () {
var innerCon = this.innerHTML, //获得里面的内容
outerCon = this.appendChild(innerCon); //添加到里面
alert(outerCon);
function $(id) {
return document.getElementById(id);
alert($('outer').innerHTML);
alert($('outer').outerHTML);
74.JS中简单继承 call 方法
function Parent(name, money) {
this.name =
this.money =
this.info = function () {
alert('姓名: ' + this.name + ' 钱: ' + this.money);
//定义孩子类
function Children(name) {
Parent.call(this, name); //继承 姓名属性,不要钱。
this.info = function () {
alert('姓名: ' + this.name);
//实例化类
var per = new Parent('parent', );
var chi = new Children('child');
per.info();
chi.info();
75.jquery 中的bind(),live(),delegate()的区别
bind:绑定事件,对新添加的事件不起作用,方法用于将一个处理程序附加到每个匹配元素的事件上并返回jquery对象。
live:方法将一个事件处理程序附加到当前选择器匹配的所有元素(包含现有的或将来添加的)的指定事件上并返回jQuery对象。
delegate:方法基于一组特定的根元素将处理程序附加到匹配器的所有元素(现有的或将来的)的一个或多个事件上
76.你如何优化自己的代码
避免全局变量(命名空间,封闭空间,模块化mvc)
拆分函数避免函数过于臃肿
77.怎么样实现两栏等高
&div id=&container& style=&display:width: 100%;&&
&div id=&left& style=&background-color:display: table-&&
&div id=&right& style=&background-color:display: table-cell&&
78.使用js实现这样的效果:在文本域里输入文字时,当按下enter键时不换行,而是替换成“{{enter}}”,(只需要考虑在行尾按下enter键的情况).
function back(ele,event){
event = event || window.
if(event.keyCode==13){
event.returnValue =
ele.value+=&{{enter}}&
79.specify(‘hello,)//=&’h,e,l,l,o,w,o,r,l,d’实现specify函数
function specify(str) {
var tempArray = Array.prototype.filter.call(str, function (value, index, array) {
return value &= 'A' &;&; value &= 'z' &;&; value != &_&;
return tempArray.join(&,&);
console.log(specify(&hedd____df*(%$#a !!!))))))llo,@@r
80.简述readyonly与disabled的区别
ReadOnly和Disabled的作用是使用户不能够更改表单域中的内容
Readonly只针对input(text/password)和textarea有效,而disabled对于所有的表单元素有效,包括select,radio,checkbox,button等
在表单元素使用了disabled后,我们将表单以POST或者GET的方式提交的话,这个元素的值不会被传递出去,而readonly会将该值传递出去
81.为什么扩展 javascript 内置对象不是好的做法
因为你不知道哪一天浏览器或javascript本身就会实现这个方法,而且和你扩展的实现有不一致的表现。到时候你的javascript代码可能已经在无数个页面中执行了数年,而浏览器的实现导致所有使用扩展原型的代码都崩溃了
82.什么是三元表达式?“三元”表示什么意思?
三元如名字表示的三元运算符需要三个操作数。语法是 条件 ? 结果1 : 结果2;. 这里你把条件写在问号(?)的前面后面跟着用冒号(:)分隔的结果1和结果2。满足条件时结果1否则结果2
83.浏览器标准模式和怪异模式之间的区别是什么?
所谓的标准模式是指,浏览器按W3C标准解析执行代码;怪异模式则是使用浏览器自己的方式解析执行代码,因为不同浏览器解析执行的方式不一样,所以我们称之为怪异模式
84.如何判断一个js变量是数组类型
ES5:Array.isArray();
[] instanceof A
调用数组的 slice 方法: Object.prototype.toString.call([]);//[object Array]
85.请列举 js 数组类型中常用的方法
concat():连接两个或更多的数组,并返回结果
join(): 把数组的所有元素放入一个字符串,元素通过指定分隔符进行分隔
pop():删除并返回数组的最后一个元素
push():向数组的末尾添加一个或更多元素,并返回新的长度
reverse():颠倒数组中元素的顺序
shift():删除并返回数组的第一个元素
slice():从某个已有的数组返回选定的元素
sort():对数组的元素进行排序
splice():删除元素,并向数组添加新元素
toSource():返回该对象的源代码
toString():把数组转换为字符串,并返回结果
toLocaleString():把数组转换为本地数组,并返回结果
valueOf():返回对象的原始值
86.下面这段代码想要循环输出结果01234,请问输出结果是否正确,如果不正确,请说明为什么,并修改循环内的代码使其输出正确结果
for (var i = 0; i & 5; ++i) {
setTimeout(function () {
console.log(i);
}, 100 * i);
}==会输出5个5,因为定时器解析到最后执行(js事件队列==
for (var i = 0; i & 5; ++i) {
setTimeout((function (i) {
console.log(i);
})(i), 100 * i);
}==利用局部作用域可以解决这样的问题==
87.变量的命名规范以及命名推荐
变量,函数,方法:小写开头,以后的每个单词首字母大写(驼峰)
构造函数,class:每个单词大写开头
基于实际情况,以动词,名词,谓词来命名。尽量言简意骇,以命名代替注释
88.只允许使用 + - * / 和 Math.* ,求一个函数 y = f(x, a, b);当x & 100 时返回 a 的值,否则返回 b 的值,不能使用 if else 等条件语句,也不能使用|,?:,数组。
// Math的 max 和min 方法 可以差文档,temp 返回的值要么是1 要么是0
function f(x, a, b) {
var temp = Math.ceil(Math.min(Math.max(x - 100, 0), 1));
alert(temp);
return a * temp + b * (1 - temp);
console.log(f(105, 101, 2));
89.JavaScriptalert(0.4*0.2);结果是多少?和你预期的一样吗?如果不一样该如何处理?
有误差,应该比准确结果偏大。现将小数转换成整数进行处理
90.主流浏览器内核
IE trident、火狐gecko、谷歌苹果 webkit、Opera-》presto
列出3条以上ff和IE的脚本兼容问题
window.event:表示当前的事件对象,IE有这个对象,FF没有,FF通过给事件处理函数传递事件对象
获取事件源:IE 用 srcElement 获取事件源,而FF 用target获取事件源
添加,去除事件:IE-&element.attachEvent(‘onclick’,function),element.detachEvent(‘onclick’,function)
FF:element.addEventListener(‘click’,function,true); element.removeEventlistener(‘click’,funciton,true);
获取标签的自定义属性:IE-&div1.value 或 div1[‘value’],FF:div1.getAttribute(‘value’)
用正则表达式,写出由字母开头,其余由数字、字母、下划线组成的6~30的字符串?
^[a-zA-Z]{1}[/w]{5,29}$
93.在Javascript中什么是伪数组?如何将伪数组转化为标准数组?
伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法来遍历它们。典型的是函数的argument参数,还有像调用getElementsByTagName,document.childNodes之类的,它们都返回NodeList对象都属于伪数组。可以使用Array.prototype.slice.call(fakeArray)将数组转化为真正的Array对象
94.删除与某个字符相邻且相同的字符,比如”fdaffdaaklfjklja”==&”fdafdaklfjklja”
var str = &fdafffdaaklfjklja&;
var arr = [];
for (var i = 0; i & str. i++) {
arr[i] = str[i]; //考虑到字符串的不可操作性,没有也能实现
for (var i = 0; i & arr. i++) {
if (arr[i] === arr[i + 1]) {
arr.splice(i, 1);
str = arr.join(&&);
console.log(str);
95.请写出三种以上的Firefox有但InternetExplorer没有的属性和函数
在IE下可通过document.frames[“id”];得到该IFRAME对象,而在火狐下则是通过document.getElementById(“content_panel_if”).contentW
IE的写法: _tbody=_table.childNodes[0],在FF中,firefox会在子节点中包含空白则第一个子节点为空白”“, 而ie不会返回空白 可以通过if(“” != node.nodeName)过滤掉空白子对象
模拟点击事件,if(document.all){ //ie下document.getElementById(“a3”).click();}
96.将字符串”{id}&/td&&td&{name}&/td&&/tr&”中的{id}替换成10,{name}替换成Tony (使用正则表达式
'&tr&&td&{$id}&/td&&td&{$id}_{$name}&/td&&/tr&'
.replace(/{/$id}/g, '10')
.replace(/{/$name}/g, 'Tony')
97.数据类型
typeof 1; &number&
typeof &hello&; &string&
typeof /[0-9]/; &object&
typeof {}; &object&
&undefined&
typeof [1,2,3]; &object&
typeof function(){}; //&function&
98.数据类型转换
parseInt(3.14); //3
parseFloat(&3asdf&); //3
parseInt(&1.23abc456&);
parseInt(true);//&true& NaN
99.Ajax的最大的特点是什么
Ajax可以实现异步通信效果,实现页面局部刷新,带来更好的用户体验;按需获取数据,节约带宽资源
100.ajax的缺点
ajax不支持浏览器back按钮
安全问题 AJAX暴露了与服务器交互的细节
对搜索引擎的支持比较弱
破坏了程序的异常机制
101.Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是
HasOwnProperty
102.对 JSON 的了解
轻量级数据交互格式,可以形成复杂的嵌套格式,解析非常方便
103.js 延迟加载的方式有哪些
JS面试题高级
1.请将一个URL的search部分参数与值转换成一个json对象
//?categoryid=112&;pageid=1
function getQueryStringArge(){
//categoryid=112&;pageid=1
var qs = location.search.length & 1?location.search.substr(1):&&;
//[categoryid=112,pageid=1]
var items = qs.length & 0?qs.split(&&;&):[];
var obj={},key,value,
for ( var i = 0;i&items.i++ ){
item = items[i].split(&=&);
key = item[0];
value = item[1];
obj[key] =
2.请用原生js实现jquery的get/post功能,以及跨域情况下
window.$ = {};
/*在$下面申明一个ajax*/
$.ajax = function (options) {
/*options 参数对象*/
/*如果没有传参 或者 传了但是不是对象*/
/* 如果判断之后是一句代码 括号可以省略*/
if (!options || typeof options != 'object') {
/*options 里面的参数 需要处理*/
var type = options.type === 'post' ? 'post' : 'get';
/*location 可以获取地址栏相关信息*/
var url = options.url || location.
var async = options.async === false ? false :
var data = options.data || {}; /*{name:xgg,age:18}*/
/*转换成 xhr 的数据格式*/
var dataStr = '';
for (var key in data) {
dataStr += key + '=' + data[key] + '&;';
/*name=xgg&;age=10&;*/
dataStr = dataStr &;&; dataStr.slice(0, -1);
/*beforeSend*/
/* options.beforeSend &;&; options.beforeSend();*/
if (options.beforeSend) {
var flag = options.beforeSend();
if (flag === false) {
/*ajax编程*/
var xhr = new XMLHttpRequest();
/*1.请求*/
/*1.1 请求行*/
xhr.open(type, type == 'get' ? (url + '?' + dataStr) : url, async);
/*1.2 请求头*/
if (type == 'post') {
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
/*1.3 请求主体 发送*/
xhr.send(type == 'get' ? null : dataStr);
/*2.响应*/
xhr.onreadystatechange = function () {
/*通讯完成*/
if (xhr.readyState == 4) {
/*1.响应成功*/
if (xhr.status == 200) {
/*获取数据*/
var result =
/*获取什么数据*/
/*怎么判断去获取什么数据*/
/*可以根据响应的类型去判断获取什么数据*/
var contentType = xhr.getResponseHeader('Content-Type');
/*如果返回的类型包含 字符串 xml */
if (contentType.indexOf('xml') & -1) {
result = xhr.responseXML;
/*如果返回的类型包含 字符串 json */
else if (contentType.indexOf('json') & -1) {
result = JSON.parse(xhr.responseText);
/*如果返回的类型包含 字符串 te

我要回帖

更多关于 关闭win10更新提示 的文章

 

随机推荐