前端知识总结

1.简述src和href的区别

href是表示超文本引用,用来建立当前元素和文档之间的链接。常用的有:link、a。src是source的缩写,用作引入。src指向的内容会嵌入到文档中当前标签所在的位置。常用的有:img、script、iframe。

2.简述同步和异步的区别

同步任务是指,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;异步任务指的是,不进入主线程,而是进入任务队列,只有等主线程任务执行完毕,任务队列开始通知主线程,请求执行任务,该任务才会进入主线程。

3.px和em区别

px:固定像素,不会受其他元素大小改变的影响,指定几px就是几px。

em:相对像素,相对父级元素字体大小来确定

rem:相对根元素html字体大小来确定

任何浏览器都支持px,IE6~8不支持em,rem,为了兼容浏览器,px和rem可以一起使用,IE6~8使用px,其他使用rem.

4.css新增单位vw,vh,wmin,wmax

vw,vh是根据视野窗口大小来确定的,单位为1。而%是相对父级元素。

兼容性

桌面pc

  • Chrome:自 26 版起就完美支持(2013年2月)
  • Firefox:自 19 版起就完美支持(2013年1月)
  • Safari:自 6.1 版起就完美支持(2013年10月)
  • Opera:自 15 版起就完美支持(2013年7月)
  • IE:自 IE10 起(包括 Edge)到现在还只是部分支持(不支持 vmax,同时 vm 代替 vmin

移动设备

  • Android:自 4.4 版起就完美支持(2013年12月)
  • iOS:自 iOS8 版起就完美支持(2014年9月)

5.sessionStroage,localStroage,cooike的区别

cookie:是服务器发给客服端的信息,存储在客服端,每次请求会带上token

设置过期时间:关闭浏览器,信息保存在硬盘中,过了设置的过期时间则会自动删除

不设置过期时间时:信息保存在内存中,关闭浏览器后信息消失。

缺点:单个cookie大小不能超过4kb,安全性低

应用场景

  • 判断用户是否登陆过网站, 以便下次登录时能够实现自动登录(或者记住密码)。如果我们删除cookie,则每次登录必须从新填写登录的相关信息。
  • 保持上次登录的时间等信息
  • 保存上次登录查看的页面
  • 浏览计数

缺点

  • 大小受限
  • 用户可以禁用cookie, 使功能受限
  • 安全性较低
  • 有些状态不能保存在客户端
  • 每次访问都要传送cookie给服务器,浪费带宽。
  • cookie数据有路径(path)的概念,可以限制cookie只属于某个路径下。

webStorage

localStroage(本地存储)   永久储存, 除非主动删除, 否则不会消失

sessionStroage(会话存储)

  • 仅在当前会话下有效
  • 在同源窗口始终存在, 浏览器关闭之前
  • 浏览器打开新的同源页面
  • 页面刷新 都还存在
  • 打开一个新的浏览器窗口同一个页面, 同源的session也是不一样的

两者的存储大小都是5MB

都保存在客服端不与服务器进行交互

只能存储字符串类型

对于复杂的json格式可以进行stringify和parse来处理

获取方式

  • window. localStroage
  • window. sessionStorage

应用场景

  • localStroage: 长期登录+判断用户是否登录, 长期存储在本地的数据
  • sessionStorage: 敏感的一次性登录

优点

  • 储存空间大
  • 节省网络流量
  • 可在本地直接获取
  • 不需要与服务器进行交互
  • 获取速度块
  • 安全性较高
  • API 
    1. window. localStroage
    2. window. sessionStorage
    3. setItem(key, value): 保存某个数据
    4. getItem(key): 获取某个数据
    5. removeItem(key): 删除某条数据
    6. clear(): 清除所有数据
    7. key(index): 根据索引获取第几条数据的键名

6.ajax的工作原理,优点缺点

原理:通过xmlHttpRequest对象来向服务器发送异步请求,从服务器获得数据,然后使用javascript来操作DOM,从而刷新页面

ajax的优点
   1、最大的一点是页面无刷新,在页面内与服务器通信,给用户的体验非常好。
  2、使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。
缺点:
    1、破坏浏览器后退机制
     2、安全问题

7.什么是css Hack

CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSS hack就是让你记住这个标准),以达到应用不同的CSS样式的目的,比如.kwstu{width:300px;_width:200px;},一般浏览器会先给元素使用width:300px;的样式,紧接着后面还有个_width:200px;由于下划线_width只有IE6可以识别,所以此样式在IE6中实际设置对象的宽度为200px,后面的把前面的给覆盖了,而其他浏览器不识别_width不会执行_width:200px;这句样式,所以在其他浏览器中设置对象的宽度就是300px;

以下是引自百度百科的定义:CSS hack由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。 这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。 简单的说,CSS hack的目的就是使你的CSS代码兼容不同的浏览器。当然,我们也可以反过来利用CSS hack为不同版本的浏览器定制编写不同的CSS效果。

CSS属性Hack、CSS选择符Hack以及IE条件注释Hack, Hack主要针对IE浏览器。

1、属性级Hack:比如IE6能识别下划线“_”和星号“*”,IE7能识别星号“*”,但不能识别下划线”_ ”,而firefox两个都不能认识。

2、选择符级Hack:比如IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}

3、IE条件注释Hack:IE条件注释是微软IE5开始就提供的一种非标准逻辑语句。比如针对所有IE:<!-[if IE]><!-您的代码-><![endif]>,针对IE6及以下版本:<!-[if it IE 7]><!-您的代码-><![endif]->,这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。

PS:条件注释只有在IE浏览器下才能执行,这个代码在非IE浏览下被当做注释视而不见。可以通过IE条件注释载入不同的CSSJSHTML服务器代码等。

为什么不推荐不推荐使用CSS hack来解决兼容性问题

CSS hack是因为现有浏览器对标准的解析不同,为了兼容各浏览器,所采用的一种补救方法。CSS hack是一种类似作弊的手段,以欺骗浏览器的方式达到兼容的目的,是用浏览器的兼容性差异来解决浏览器的兼容性问题。因此,在设计之初,写CSS hack需要遵循以下三条原则:

  • 有效: 能够通过 Web 标准的验证
  • 只针对太古老的/不再开发的/已被抛弃的浏览器, 而不是目前的主流浏览器
  • 代码要丑陋。让人记住这是一个不得已而为之的 Hack, 时刻记住要想办法去掉它。现在很多hacks已经抛弃了最初的原则,而滥用hack会导致浏览器更新之后产生更多的兼容性问题。因此,并不推荐使用CSS hack来解决兼容性问题。

8.jivascript中如何检测一个变量是字符串类型,请写出函数

9.如何获取浏览器URL中查询字符串中的参数?

想要知道怎样解决这个问题,首先我们先认识一下Location对象

Location对象包含了当前页面与位置(url)相关的信息

URL示例:http://www.baidu.com:80/news/index.aspx?id=1&name=location#top

Location对象共定义了8个属性

href:声明了当前显示文档的完整的URL

protocol:声明URL的协议部分,包括后缀的冒号,例如http:

host:声明当前URL的主机名和端口号(是hostname和port的合集),例如www.baidu.com:80

hostname:声明当前URL的主机名,例如www.baidu.com

port:声明当前URL的端口部分,例如80

pathname:声明当前URL的路径部分,例如news/index.aspx

search:声明当前URL的查询部分,例如?id=1&name=localhost

hash:声明当前URL的锚的部分,例如#top,指定在文档中的锚记的名称

什么是查询字符串?就是Location对象的search属性的值,在这里指?id=1&name=location

那么用Locaton对象结合String对象的方法怎么获取呢?可以用下面这个函数获取:

function getQuery(name)

  {

  var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");

  var r = window.location.search.substr(1).match(reg);

  if (r!=null) return unescape(r[2]); return null;

  }

9.什么是xss攻击

中文名为跨站脚本, 是发生在目标用户的浏览器层面上的,当渲染DOM树的过程成发生了不在预期内执行的JS代码时,就发生了XSS攻击。
跨站脚本的重点不在‘跨站’上,而在于‘脚本’上。大多数XSS攻击的主要方式是嵌入一段远程或者第三方域上的JS代码。实际上是在目标网站的作用域下执行了这段js代码。

xss跨站脚本攻击主要用于前端层面,在用户的输入层面插入攻击脚本,改变页面的显示,或窃取网站的cookie。

预防方法:不相信用户的所有输入,对用户的输入进行一个转义,不允许js对cookie的读取。

10.css动画与js动画的差异

css动画,声明用@keyframe ,使用animation。也能用js手写动画事件,jq用animation()方法。从动画性能来看。js动画需要执行js逻辑,有js的解析过程,性能会比css动画低。从代码复杂度上看,js代码比css动画代码要复杂,但是它能控制动画的暂停,取消,停止,css动画不能添加事件。

11.事件委托的currentTarget , target

currentTarget是绑定事件的元素(在函数中相当于this),target是指触发事件的具体元素

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值