CVTE提前批笔试总结

CVTE的笔试中的选择题为多选题,大题为两道编程题,对笔试中的一些点整理如下:

window.history对象

window.history 对象包含浏览器的历史

  • history.length: 返回浏览器历史列表中的 URL 数量。

  • go : 加载 history 列表中的某个具体页面,最常用的,参数为数字(-1上一个页面,1前进一个页面)

    或者字符串(字符串必须是局部或完整的URL,该函数会去匹配字符串的第一个URL)

  • history.back() : 与在浏览器点击后退按钮相同

  • history.forward() : 与在浏览器中点击按钮向前相同

JS返回上一页的方法:

  • history.go(-1)
  • history.back();
  • window.location.go(-1)

script 标签的async属性

async 属性规定一旦脚本可用,则会异步执行。

注释:async 属性仅适用于外部脚本(只有在使用 src 属性时)。

带有async或者defer的script都会立刻下载并不阻塞页面解析,而且都提供一个可选的onload事件处理,在script下载完成后调用,用于做一些和此script相关的初始化工作。它的不同之处在于async一旦下载完成就立即执行(在window.onload事件之前),不确保执行的顺序,而defer能确保js是在按照其在页面中的顺序执行(在DOMContentLoaded事件之前)

onload与DOMContentLoaded的区别

  • onload 事件触发时,页面上所有的DOM,样式表,脚本,图片,flash都已经加载完成了。
  • DOMContentLoaded 事件触发时,仅当DOM加载完成,不包括样式表,图片,flash。

CORS

CORS是一个W3C标准,全称是”跨域资源共享”(Cross-origin resource sharing,它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制

CORS需要浏览器和服务器同时支持,对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信

服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问

简单请求与非简单请求:

(1) 请求方法是以下三种方法之一:

  • HEAD
  • GET
  • POST

(2)HTTP的头信息不超出以下几种字段:

  • Accept
  • Accept-Language
  • Content-Language
  • Last-Event-ID
  • Content-Type:只限于三个值application/x-www-form-urlencodedmultipart/form-datatext/plain

只要同时满足以下两大条件,就属于简单请求,凡是不同时满足上面两个条件,就属于非简单请求。

对于简单请求,浏览器直接发出CORS请求。具体来说,就是在头信息之中,增加一个Origin字段(Origin字段用来说明,本次请求来自哪个源(协议 + 域名 + 端口)。服务器根据这个值,决定是否同意这次请求)

Access-Control-Allow-Credentials

该字段可选。它的值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可

与JSONP的比较:

CORS与JSONP的使用目的相同,但是比JSONP更强大。

JSONP只支持GET请求,CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。

jQuery的ajax方法中默认是请求不带cookie

得到页面中出现最多次数的标签及其次数

function getCount() {
  var tags = document.getElementsByTagName('*');
  var obj = {};
  var max = 0;
  var tag = '';

  for(var i = 0; i < tags.length; i++) {
    var item = tags[i].tagName;

    if(obj[item]) {
      obj[item]++;
      if(max < obj[item]) {
        max = obj[item]
        tag = item + '';
      }
    }else {
      obj[item] = 1;
    }
  }

  console.log(max,tag);         
}

模板引擎

简单实现:

function template(str) {

  function replace(obj) {
    var t = null;
    for(var item in obj) {
      reg = new RegExp('<%= ' + item + ' %>', 'ig');
      t = (t || str).replace(reg, obj[item]);
      console.log(t);
    }

    return t;
  }

  return replace;
}

var complite = template('今天<%= day %>, 在<%= day %>应该去爬山, 天气<%= weather %>');
var str = complite({
  day : '星期三',
  weather : '晴'
});
document.write(str);

你可能感兴趣的:(总结)