CVTE的笔试中的选择题为多选题,大题为两道编程题,对笔试中的一些点整理如下:
window.history 对象包含浏览器的历史
history.length: 返回浏览器历史列表中的 URL 数量。
go : 加载 history 列表中的某个具体页面,最常用的,参数为数字(-1上一个页面,1前进一个页面)
或者字符串(字符串必须是局部或完整的URL,该函数会去匹配字符串的第一个URL)
history.back() : 与在浏览器点击后退按钮相同
history.forward() : 与在浏览器中点击按钮向前相同
JS返回上一页的方法:
async 属性规定一旦脚本可用,则会异步执行。
注释:async 属性仅适用于外部脚本(只有在使用 src 属性时)。
带有async或者defer的script都会立刻下载并不阻塞页面解析,而且都提供一个可选的onload事件处理,在script下载完成后调用,用于做一些和此script相关的初始化工作。它的不同之处在于async一旦下载完成就立即执行(在window.onload事件之前),不确保执行的顺序,而defer能确保js是在按照其在页面中的顺序执行(在DOMContentLoaded事件之前)
onload与DOMContentLoaded的区别
onload
事件触发时,页面上所有的DOM,样式表,脚本,图片,flash都已经加载完成了。DOMContentLoaded
事件触发时,仅当DOM加载完成,不包括样式表,图片,flash。CORS是一个W3C标准,全称是”跨域资源共享”(Cross-origin resource sharing,它允许浏览器向跨源服务器,发出XMLHttpRequest
请求,从而克服了AJAX只能同源使用的限制
CORS需要浏览器和服务器同时支持,对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信
服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问
简单请求与非简单请求:
(1) 请求方法是以下三种方法之一:
(2)HTTP的头信息不超出以下几种字段:
application/x-www-form-urlencoded
、multipart/form-data
、text/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);