• Web前端错题模糊题记录



    title: Web前端错题模糊题记录
    toc: true
    date: 2018-09-20 10:04:36
    categories:

    • Web

    tags:

    • HTML
    • CSS
    • JavaScript

    HTML

    元素的alt和title有什么异同?

    alt和title同时设置的时候,alt作为图片的替代文字出现,title是图片的解释文字。

    关于html5标签?

    <audio> 标签定义声音,比如音乐或其他音频流。
    <canvas> 标签定义图形,比如图表和其他图像。<canvas> 标签只是图形容器,必须使用脚本来绘制图形。
    <article>标签定义外部的内容。比如来自一个外部的新闻提供者的一篇新的文章,或者来自 blog 的文本,或者是来自论坛的文本。亦或是来自其他外部源内容。
    <menu> 标签定义命令的列表或菜单。<menu> 标签用于上下文菜单、工具栏以及用于列出表单控件和命令。command 元素表示用户能够调用的命令。<command> 标签可以定义命令按钮,比如单选按钮、复选框或按钮。只有当 command 元素位于 menu 元素内时,该元素才是可见的。否则不会显示这个元素,但是可以用它规定键盘快捷键。

    有关HTML的Doctype和严格模式与混杂模式?

    文档类型

    DTD(文档类型定义)是一组机器可读的规则,他们定义 XML 或 HTML 的特定版本中允许有什么,不允许有什么。在解析网页时,浏览器将使用这些规则检查页面的有效性并且采取相应的措施。浏览器通过分析页面的 DOCTYPE 声明来了解要使用哪个 DTD ,由此知道要使用 HTML 的哪个版本。

    DOCTYPE 当前有两种风格,严格( strict )和过渡( transitional )。过渡 DOCTYPE 的目的是帮助开发人员从老版本迁移到新版本。

    如果发送具有正确的 MIME 类型的 XHTML 文档,理解 XML 的浏览器将不显示无效的页面。

    浏览器模式

    浏览器有两种呈现模式:标准模式和混杂模式(quirks mode,也叫兼容模式)。在标准模式中,浏览器根据规范呈现页面;在混杂模式中,页面以一种比较宽松的向后兼容的方式显示。
    

    ** DOCTYPE 切换 **

    对于 HTML 4.01 文档,

    • 包含严格 DTD 的 DOCTYPE 常常导致页面以标准模式呈现。
    • 包含过度 DTD 和 URI 的 DOCTYPE 也导致页面以标准模式呈现。
    • 但是有过度 DTD 而没有 URI 会导致页面以混杂模式呈现。
    • DOCTYPE 不存在或形式不正确会导致 HTML 和 XHTML 文档以混杂模式呈现。

    NOSCRIPT标签是做什么用的?

    noscript 元素用来定义在脚本未被执行时的替代内容(文本)。

    CSS

    关于CSS的position属性?

    static没有定位,元素出现在正常的流中。

    fixed是相对于窗口的固定定位。

    关于border:none以及border:0?

    当定义border:none时,表示无边框样式,浏览器并不会对边框进行渲染,也就没有实际的宽度;

    定义边框时,除了设置宽度外,还必须设置边框的样式才能显示出来。

    关于CSS sprites图片字节?

    CSS Sprites能减少图片的字节,曾经比较过多次,3张图片合并成1张图片的字节总是小于这3张图片的字节总和。

    关于浏览器引擎?

    Wekbit是一个开源的Web浏览器引擎,也就是浏览器的内核。Apple的Safari, Google的Chrome, Nokia S60平台的默认浏览器,Apple手机的默认浏览器,Android手机的默认浏览器均采用的Webkit作为器浏览器内核。Webkit的采用程度由 此可见一斑,理所当然的成为了当今主流的三大浏览器内核之一。

    另外两个分别是Gecko和Trident,大名鼎鼎的Firefox便是使用的Gecko 内核,而微软的IE系列则使用的是Trident内核。

    还有Presto: Opera的内核,但由于市场选择问题,主要应用在手机平台--Opera mini。

    另外,搜狗浏览器是双核的,双核并不是指一个页面由2个内核同时处理,而是所有网页(通常是标准通用标记语言的应用超文本标记语言)由webkit内核处理,只有银行网站用IE内核。

    JavaScript

    flash和js通过什么类如何交互?

    ExternalInterface。Flash提供了ExternalInterface接口与JavaScript通信,ExternalInterface有两个方法,call和addCallback,call的作用是让Flash调用js里的方法,addCallback是用来注册flash函数让js调用。

    有关浏览器中使用js跨域获取数据?

    只要协议 、 域名 、 端口有任何一个不同, 都被当作是 不同 的域。

    1.CORS

    CORS(Cross-Origin Resource Sharing,跨资源共享),基本思想是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应的成功或失败。即给请求附加一个额外的Origin头部,其中包含请求页面的源信息(协议、域名和端口),以便服务器根据这个头部决定是否给予响应。

    2.document.domain

    将页面的document.domain设置为相同的值,页面间可以互相访问对方的JavaScript对象。

    注意:

    不能将值设置为URL中不包含的域;

    松散的域名不能再设置为紧绷的域名。

    3.图像Ping

    var img=new Image();

    img.onload=img.onerror=function(){

    ... ...

    }

    img.src="url?name=value";

    请求数据通过查询字符串的形式发送,响应可以是任意内容,通常是像素图或204响应。

    图像Ping最常用于跟踪用户点击页面或动态广告曝光次数。

    缺点:

    只能发送GET请求;

    无法访问服务器的响应文本,只能用于浏览器与服务器间的单向通信。

    4.Jsonp

    var script=document.createElement("script");

    script.src="url?callback=handleResponse";

    document.body.insertBefore(script,document.body.firstChild);

    JSONP由两部分组成:回调函数和数据

    回调函数是接收到响应时应该在页面中调用的函数,其名字一般在请求中指定。

    数据是传入回调函数中的JSON数据。

    优点:

    能够直接访问响应文本,可用于浏览器与服务器间的双向通信。

    缺点:

    JSONP从其他域中加载代码执行,其他域可能不安全;

    难以确定JSONP请求是否失败。

    5.Comet

    Comet可实现服务器向浏览器推送数据。

    Comet是实现方式:长轮询和流

    短轮询即浏览器定时向服务器发送请求,看有没有数据更新。

    长轮询即浏览器向服务器发送一个请求,然后服务器一直保持连接打开,直到有数据可发送。发送完数据后,浏览器关闭连接,随即又向服务器发起一个新请求。其优点是所有浏览器都支持,使用XHR对象和setTimeout()即可实现。

    流即浏览器向服务器发送一个请求,而服务器保持连接打开,然后周期性地向浏览器发送数据,页面的整个生命周期内只使用一个HTTP连接。

    6.WebSocket

    WebSocket可在一个单独的持久连接上提供全双工、双向通信。

    WebSocket使用自定义协议,未加密的连接时ws://;加密的链接是wss://。

    var webSocket=new WebSocket("ws://");

    webSocket.send(message);

    webSocket.onmessage=function(event){

    var data=event.data;

    ... ....

    }

    注意:

    必须给WebSocket构造函数传入绝对URL;

    WebSocket可以打开任何站点的连接,是否会与某个域中的页面通信,完全取决于服务器;

    WebSocket只能发送纯文本数据,对于复杂的数据结构,在发送之前必须进行序列化JSON.stringify(message))。

    优点:

    在客户端和服务器之间发送非常少的数据,减少字节开销。

    如何获取一个元素节点(id 为 test)的父元素,找到之后如何删除这个元素节点(id 为 test)?

    var testNode = document.getElementById('test');
    var parentNode = testNode.parentNode;
    parentNode.removeChild(testNode);	
    

    !编写一个 js 函数 jsonp 的处理函数:

    讲解链接

    // 手写jsonp
    function myCallback(data) {
        console.log(data)
    }
     
    function jsonp(url, data, callback) {
        // data是否是字符串,是的话证明data值就是函数名
        if (typeof data == 'string') {
            callback = data
            data = {}
        }
        // 拼接data
        url += url.indexOf('?') === -1 ? '?' : '&'
        url += 'callback=' + callback
        var params = ""
        for (var i in data) {
            params += '&' + i + '=' + data[i]
        }
        url += params
        // 在页面插入script标签
        var script = document.createElement('script')
        script.setAttribute('src', url)
        document.querySelector('head').appendChild(script)
     
    }
     
    jsonp('http://baidu.com/index.html', { id: 34 }, 'myCallback')
    jsonp('http://baidu.com/index.html?name="zjn"', { id: 34 }, 'myCallback')
    

    编写一个函数判断参数是否是数组类型,如果是返回 true

    // 方法一:
    function isArray(arg){
      return (arg instanceof Array);
    }
    // 方法二:
    function isArray(arg){
      return Object.prototype.toString.call(arg) == '[object Array]' ? true : false;
    }
    // 方法三:
    function isArray(arg){
      return arg.__proto__.constructor.name == 'Array' ?true : false;
    }
    

    关于对象的length属性:

    Window.length //返回在当前窗口中frames的数量(包括IFRAMES)

    String.length //返回字符串中的字符数目

    Function.length //获取一个函数定义的参数数目

    Array.length //返回数组中元素的数目

    如何获取 url 中的 query 字段对应的值,比如:https://m.mobike.com?source=part1,编写一个函数获取 source 对应的值 part1

    let query = (url) => {
      let p = url.split('?')[1];
      let sourcePos = p.indexOf('source');
      if (sourcePos > -1) {
        if (p.indexOf('&', sourcePos+7) > -1) {
          return p.substring(sourcePos+7,p.indexOf('&', sourcePos+7));
        } else {
          return p.substring(sourcePos+7);
        }
      }
    };
    

    关于IE的event对象支持的方法:

    IE的所有事件对象都支持的方法和属性:

    • cancelBubble 默认为false,设置为true就可以取消事件冒泡
    • returnValue 默认为true,设置为false可以取消事件的默认行为
    • srcElement 对于生成事件的 Window 对象、Document 对象或 Element 对象的引用
    • type 被触发事件的类型

    DOM事件的方法(IE的事件模型不支持):

    • initEvent() 初始化新创建的 Event 对象的属性
    • preventDefault() 通知浏览器不要执行与事件关联的默认动作
    • stopPropagation() 不再派发事件

    JavaScript的函数调用有哪几种方式?请举例说明,并分析其不同之处。

    img

    以下 javascript 代码,在浏览器中运行的结果是

    img

    先全部输出first,然后全部输出second。

    js 是运行于单线程环境中,定时器作用是在规定时间内将事件加入执行队列,而加入的前提是当前事件队列没有任何东西。

    其他

    和后端 API 服务通信的方式有哪些

    1. ajax
    2. websocket
    3. SSE
    4. 服务器端渲染

    POST 提交的时候,content-type 有哪几种?

    常见的有四种

    1. application/x-www-form-urlencoded
    2. application/json
    3. multipart/form-data
    4. text/xml

    对前端工程化的理解,以及任意构建工具(webpack、gulp、grunt、rollup)的某一个使用的一些描述

    前端工程化

    https://blog.csdn.net/mayfla/article/details/78697020

    webpack

    webpack是一个前端模块化方案,更侧重模块打包,我们可以把开发中的所有资源(图片、js文件、css文件等)都看成模块,通过loader(加载器)和plugins(插件)对资源进行处理,打包成符合生产环境部署的前端资源。

    Node.js 的核心模块

    HTTP模块、URL模块、Query Strings模块、File System模块、Path模块、Global模块。

    ajax事件有哪些

    img

  • 相关阅读:
    (转)静态方法与实例方法
    使用C#和Excel进行报表开发(8)
    js千分位
    各种语言多态性比较
    中国互联网100个Web2.0网站名单
    HDU4405 期望
    HDU1266 字符串逆转
    POJ1087 DInic
    POJ1003 水~
    HDU4403 DFS
  • 原文地址:https://www.cnblogs.com/zmj97/p/10180684.html
Copyright © 2020-2023  润新知