前端问题汇总

Html&&Css

1.Web标准的理解

结构、表现、行为分离使页面易于维护,页面响应速度快,设备兼容更好,容易提高搜索引擎的解析优化

2.浏览器内核差异

是渲染网页内容的,将网页的代码转换为看得见的页面,使用排版所以会导致各个浏览器间的排版存在错误或误差(两方面原因:网站本身编写不规范,浏览器本身的不规范)

3.兼容性
  • html对象获取问题:
    FireFox:document.getElementById("idName");
    ie:document.idname或者document.getElementById("idName")
    解决办法:统一使用document.getElementById("idName")
  • const问题:
    说明:Firefox下,可以使用const关键字或var关键字来定义常量;
    IE下,只能使用var关键字来定义常量.
    解决方法:统一使用var关键字来定义常量.
  • frame问题:

    访问frame对象:在IE和Firefox中都可以使用window.document.getElementById("frameId")来访问这个frame对象.
    切换frame内容:在 IE和Firefox中都可以使用window.document.getElementById("testFrame").src = "xxx.html"window.frameName.location = "xxx.html"来切换frame的内容.
  • 模态和非模态窗口问题:
    IE下,可以通过showModalDialogshowModelessDialog打开模态和非模态窗口;Firefox下则不能.
    解决方法:直接使用window.open(pageURL,name,parameters)方式打开新窗口。
    如果需要将子窗口中的参数传递回父窗口,可以在子窗口中使用window.opener来访问父窗口.
    例如:var parWin = window.opener; parWin.document.getElementById("Aqing").value = "Aqing";
  • firefox与IE的父元素(parentElement)的区别:
    IE:obj.parentElement
    firefox:obj.parentNode
    解决方法: 因为firefox与IE都支持DOM,因此使用obj.parentNode是不错选择.
  • document.formName.item(”itemName”)问题:
    IE下,可以使用document.formName.item(”itemName”)document.formName.elements["elementName"];Firefox 下,只能使用document.formName.elements["elementName"]
    解决方法:统一使用document.formName.elements["elementName"]
  • input.type属性问题
    IE下input.type属性为只读;但是Firefox下input.type属性为读写。
    解决办法:不修改input.type属性。如果必须要修改,可以先隐藏原来的input,然后在同样的位置再插入一个新的input元素。
  • 事件委托方法
    IE下,使用document.body.onload= inject;其中functioninject()在这之前已被实现;在Firefox下,使用document.body.onload= inject();
  • 各种的样式兼容
4.vue相关
  • vue组件间传值:
    父子组件传值:props
    子父传值:$emit
    多组件:EventBus 事件总线
  • 生命周期:
    创建:
    beforeCreate
    在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。
    created
    实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见

挂载:
beforeMount
在挂载开始之前被调用:相关的 render 函数首次被调用。
mounted
el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。
DOM渲染在mounted阶段已经完成。
更新:
beforeUpdate
数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。 你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。
updated

由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。
当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。
该钩子在服务器端渲染期间不被调用
销毁:
beforeDestroy
实例销毁之前调用。在这一步,实例仍然完全可用。
destroyed
Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用。
ajax请求是在monted生命周期中完成的

你可能感兴趣的:(前端问题汇总)