• HTML有关


    HTML有关面试知识点

    对web标准的理解、浏览器内核差异、兼容性、HTML5
    
    • Doctype作用?标准模式与兼容(混杂、怪癖)模式各有什么区别?

      1. <!DOCTYPE>声明位于HTML文档中的第一行,处于<html>标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现。
      2. 标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作
    • HTML5位什么只需要写<!DOCTYPE html>?

      1. HTML5不基于SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为
      2. SGML--标准通用标记语言,是一种定义电子文档结构和描述其内容的国际标准语言;提供异常强大的工具,同时具有极好的扩展性,是所有电子文档标记语言的起源
      3. DTD--文档类型定义,一套为了进行程序间的数据交互而建立的关于标记符的语法规则
    • 行内元素有哪些?块级元素有哪些?空元素(在开始标签中进行关闭)有哪些?

      1. CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,默认值为block,则为块级元素;默认值为inline,则为行内元素
      2. 行内元素:a b span img input select strong
      3. 块级元素:div ul ol li dl dt dd p h1...
      4. 常见空元素:<br> <hr> <input> <link> <meta>
    • 页面导入样式时,使用link@import有什么区别?

      1. link属于XHTML标签,除了加载CSS外,还能用于rel连接属性等作用;@import是CSS提供的,是一个CSS标签,只能用于加载CSS

      2. 页面被加载时,link会同时被加载,@import引用的CSS会等到页面被加载完再加载

         <link rel="stylesheet" type="text/css" href="my.css">
         //import 引入
         <style type="text/css">
         	@import url(my.css);
         </style>
        
    • 浏览器内核理解

      1. 主要分成两部分:渲染引擎和JS引擎
      2. 渲染引擎--负责取得网页的内容(HTML、XML、图像等等)、整理讯息(加入CSS),以及计算网页的显示方式,然后输出至显示器或打印机
      3. JS引擎--解析和执行javascript来实现页面的动态效果
    • 浏览器内核
      IE--Trident内核、FF--Gecko内核、Opera7及以上--Presto内核、Safari,chrome--Webkit内核

    • html5有哪些新特性、移除了哪些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分HTML和HTML5?

      1. 主要是关于图像,位置,存储,多任务等功能的增加
        绘画canvas
        用于媒介回放的videoaudio元素
        本地离线存储localStorage长期存储数据,浏览器关闭后数据不丢失
        sessionStorage的数据在浏览器关闭后自动删除
        语义化更好的内容元素artical header nav section footer
        表单控件calendar date time email url search
        新的技术webworker websocket Geolocation

      2. 移除的元素
        纯表现的元素:basefont big center font s strike tt u
        对可用性产生负面影响的元素:frame frameset noframe

      3. 兼容
        IE8/IE7/IE6支持通过document.createElement方法产生的标签
        使用成熟的框架

      4. 通过 DOCTYPE声明、新增的结构元素、功能元素 区分HTML5

    • webworker websocket Geolocation

      1. webworker--运行在后台的JavaScript,独立于其他脚本,不会影响页面性能

          // html文件
         <p>计数:<output id="result"></output></p>
         <button onclick="startWorker()">开始工作</button>
         <button onclick="stopWorker()">停止工作</button>
        
         //js文件
         var w;
         function startWorker() {
             //判断浏览器是否支持webWorker
             if(typeof(Worker) !== "undefined") {
         	    if(typeof(w) == "undefined") {
         		    //创建webWorker对象
         		    w = new Worker("demo_workers.js");
         	    }
         	    //绑定`onmessage`事件监听
         	    w.onmessage = function(event) {
         		    document.getElementById("result").innerHTML = event.data;
         	    };
             } else {
         	    document.getElementById("result").innerHTML = "浏览器不支持";
             }
         }
        
         function stopWorker() {
         //创建webWorker对象后,它会继续监听消息,直到其被终止
         //使用 `terminate()`方法终止webworker,并释放浏览器、计算机资源
             w.terminate();
             w = undefined;
         }
         // demo_workers.js文件
         var i = 0;
         function timedCount() {
             i = i+1;
             postMessage(i);
             setTimeout("timedCount()", 500);
         }
         timedCount();
        
      2. websocket--一种在单个TCP连接上进行全双工通讯的协议
        浏览器通过JavaScript向服务器发出建立webSocket连接的请求,连接建立后,客户端和服务端就可以通过TCP连接直接交换数据
        获取WebSocket连接后,可以通过send()方法来向服务器发送数据,并通过onmessage事件来接收服务器返回的数据

         //创建WebSocket对象
         var Socket = new WebSocket(url, [protocal]);
         //WebSocket属性 
         //只读 0-连接未建立 1-连接已建立 2-连接正在关闭 3-已关闭或无法打来
         Socket.readyState
         //只读 已被`send()`放入正在队列中等待传输,但是还没发出的UTF-8文本字节数
         Socket.bufferedAmount
         // WebSocket 事件
         Socket.onopen //连接建立时触发
         Socket.onmessage //客户端接收到服务端数据时触发
         Socket.onerror //通信发生错误时触发
         Socket.onclose //连接关闭时触发
         // WebSocket 方法
         Socket.send() //使用连接发送数据
         Socket.close() // 关闭连接
        

      实例

        // js文件
        function WebSocketTest() {
        	if ("WebSocket" in window)
        	{
        		alert("浏览器支持WebSocket");
        		// 打开一个 web socket
        		var ws = new WebSocket("ws://localhost:9998/echo");
        		ws.onopen = function(){
        			// web socket 已连接上,使用 send()方法发送数据
        			ws.send("发送数据");
        			alert("数据发送中...");
        		};
        		ws.onmessage = function (evt)
        		{
        			var received_msg = evt.data;
        			alert("数据已接收...");
        		};
        		ws.onclose = function() {
        			//关闭 websocket
        			alert("连接已关闭...");
        		};
        	}
        	else {
        		alert("浏览器不支持websocket");
        	}
        }
        // html文件
        <div id = "sse">
        	<a herf="javascript:WebSocketTest()">运行 WebSocket</a>
        </div>
      
      1. Geolocation--用于定位用户的位置

         var x = document.getElementById("demo");
         function getLoction() {
             if (navigator.geolocation)
             {
         	    navigator.geolocation.getCurrentPosition(showPositon);
             }
             else {
         	    x.innerHTML = "浏览器不支持"
             }
         }
         function showPosition(position){
             x.innerHTML = "维度:" + position.coords.latitude + 
             "<br>经度:" + position.coords.longitude;
         }
        
    • HTML语义化理解
      用正确的标签做正确的事;html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析;搜索引擎的爬虫也依赖于html标记来确定上下文和各个关键字的权重,利于SEO
      SEO--搜索引擎优化,通过对网站进行站内优化和修复和站外优化,从而提高网站的网站关键词排名以及公司产品的曝光度

    • HTML5的离线存储
      在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件
      原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制,通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储下来;之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示具体解释

        //页面头部加入`manifest`的属性
        <html manifest = "cache.manifest">
        ...
        </html>
        //在`cache.manifest`文件中编写离线存储资源
        CACHE MANIFEST
        #v0.11
        // 表示需要离线存储的资源列表,包含`manifest`的页面自动存储,不用包含
        CACHE:
      
        js/app.js
        css/style.css
        // 在它下面列出的资源只有在线的情况下才能访问,不会离线存储
        NETWORK:
        resourse/logo.png
        // 如果访问第一个资源失败,那么就用第二个资源池替换
        FALLBACK:
        // offline.html
      
    • cookies sessionStorage localStorage

      1. cookie是网站为了标识用户身份而存储在用户本地终端上的数据(通常经过加密)

      2. cookie数据始终在同源的http请求中携带,标记会在浏览器和服务器间来回传递

      3. sessionStoragelocalStorage不会自动把数据发给服务器,仅在本地保存

      4. 存储大小:cookie数据大小不能超过4k;sessionStoragelocalStorage虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大

      5. 有效时间:localStorage--存储持久数据,浏览器关闭后数据不丢失,除非主动删除数据 sessionStorage--数据在当前浏览器窗口关闭后自动删除 cookie--设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭

         //创建和访问 `localStorage`
         localStorage.lastname = "smith";
         document.write(localStorage.lastname);
         // 创建和访问`sessionStorage`
         sessionStorage.lastname = "smith";
         document.write(sessionStorage.lastname);
         // 创建和存储`cookie`
         function setCookie(c_name,value,expiredays)
         {
             var exdate = new Date();
             exdate.setDate(exdate.getDate()+expiredays)
             document.cookie = c_name + "=" + escape(value) +
             ((expiredays==null)?"" : ";expires =" + exdate.toGMTString())
         }
         //jquery设置cookie
         $.cookie("cookie", "foo");//设置名为cookie,值为foo的cookie
         $.cookie("cookie", "foo", {expires:10});//过期时间10天
         $.cookie("cookie", "foo", {path:"/"});// 设置保存路径为根目录
         $.cookie("cookie");//获取
         $.cookie("cookie", null);//删除
        
    • label的作用及使用方式

        // 定义表单控件间的关系,当用户选择改标签时,浏览器自动聚焦到相关元素
        <label for = "Name">Number:</label>
        <input type = "text" name = "Name" id = "Some"/>
        <label>Date:<input type = "text" name="otherName"/></label>
      
    • HTML5--form的自动完成功能

        <form action="/example/html5/demo_form.asp" method="get" autocomplete="on">
        First name:<input type="text" name="fname" /><br />
        Last name: <input type="text" name="lname" /><br />
        E-mail: <input type="email" name="email" autocomplete="off" /><br />
        <input type="submit" />
        </form>
  • 相关阅读:
    使用sublimehighlight 将文本 转化html
    iOS- 制作U盘安装Mac OS X 系统
    垃圾回收的常见算法
    jvm的三种参数类型
    HashMap遍历取值
    不要在 foreach 循环里进行元素的 remove/add 操作
    Arrays.asList()使用指南
    正确使用 equals 方法
    elasticsearch安装与配置(在Linux环境下配置)
    本地访问Linux里端口连接失败
  • 原文地址:https://www.cnblogs.com/yfife/p/7419323.html
Copyright © 2020-2023  润新知