什么是AJAX?
A=异步
J=JavaScript
A=and
X=XML
使用AJAX的网页,内容是异步加载的。
没有使用AJAX的网页,在网页完全打开的时候,加载就完成了。
除非刷新或重新载入这个网页,浏览器不会再向服务器发出请求,内容也不会再发生变化。
以查看某支股票的股价为例。
过去没有AJAX时,网页会10秒定时刷新。
使用AJAX,只需要改变很小一部分内容就好可以了(甚至只是几个数字)。
数据量明显减少,对降低服务器端负载、缩短用户端等待时间都有好处。
A:异步,已经解释过。
J:浏览器端编程语言中,JavaScript是绝对的主导地位。
A:并列关系。
X:在出现HTML5之前,当时很多网页以XHTML为标准。XHTML基于XML。通过Javascript控制网页内容,实际就是针对XML进行DOM操作。
简述BOM对象模型的对象及方法
对象
window
+location
+document
+navigator
+frames
+screen
+history
方法
alert() 显示带有一段消息和一个确认按钮的警告框。
blur() 把键盘焦点从顶层窗口移开。
clearInterval() 取消由 setInterval() 设置的 timeout。
clearTimeout() 取消由 setTimeout() 方法设置的 timeout。
close() 关闭浏览器窗口。
confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。
createPopup() 创建一个 pop-up 窗口。
focus() 把键盘焦点给予一个窗口。
moveBy() 可相对窗口的当前坐标把它移动指定的像素。
moveTo() 把窗口的左上角移动到一个指定的坐标。
open() 打开一个新的浏览器窗口或查找一个已命名的窗口。
print() 打印当前窗口的内容。
prompt() 显示可提示用户输入的对话框。
resizeBy() 按照指定的像素调整窗口的大小。
resizeTo() 把窗口的大小调整到指定的宽度和高度。
scroll()
scrollBy() 按照指定的像素值来滚动内容。
scrollTo() 把内容滚动到指定的坐标。
setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。
setTimeout() 在指定的毫秒数后调用函数或计算表达式。
javascript全局函数
以前没搞懂JS的全局函数,全局函数和window对象的函数不一样。
全局函数不属于任何一个内置对象。
JS包含以下7个全局函数,用于一些常用的功能:escape(),eval(),isNan(),isFinite(),parseFloat(),parseInt(),unescape();
跨域请求
document.domain+iframe方法
www.a.com上的a.html
document.domain = 'a.com';
var ifr = document.createElement('iframe');
ifr.src = 'http://script.a.com/b.html';
ifr.style.display = 'none';
document.body.appendChild(ifr);
ifr.onload = function(){
var doc = ifr.contentDocument || ifr.contentWindow.document;
// 在这里操纵b.html
alert(doc.getElementsByTagName("h1")[0].childNodes[0].nodeValue);
};
script.a.com上的b.html
script.a.com上的b.html
document.domain = 'a.com';
写一个函数判断对象类型
var is ={
types : ["Array", "Boolean", "Date", "Number", "Object", "RegExp", "String", "Window", "HTMLDocument"]
};
for(var i = 0, c; c = is.types[i ++ ]; ){
is[c] = (function(type){
return function(obj){
return Object.prototype.toString.call(obj) == "[object " + type + "]";
}
)(c);
}
用面向对象的js代码进行自我介绍
function extend(sup, overrides) {
var sub = overrides && overrides.constructor || function() {
sup.apply(this, arguments);
};
var fn = function() {};
var subp;
fn.prototype = new sup;
subp = sub.prototype = fn.prototype;
subp.constructor = sub;
apply(subp, overrides);
sub.superClass = sup.prototype;
return sub;
}
function apply(o, c) {
if (o && c && typeof c == 'object') {
for (var p in c) {
o[p] = c[p];
}
}
return o;
}
function FrontEnder() {
this.skills = ['HTML', 'CSS', 'JavaScript'];
}
apply(FrontEnder.prototype, {
code: function() {
console.log('我能编写处理业务逻辑代码');
},
paint: function() {
console.log('我能还原设计稿');
},
debug: function() {
console.log('我能使用工具调试代码');
}
});
var Me = extend(FrontEnder, {
constructor: function() {
// 个人的性格是怎么样的?等完善
var _character = '';
return function Me(config) {
config = config || {};
Me.superClass.constructor.call(this);
this.skills = this.skills.concat(['HTML5', 'CSS3', 'Grunt', 'Zepto', 'Webapp', 'ChromeDevtool']);
apply(this, config);
}
}(),
paint: function() {
Me.superClass.paint.call(this);
console.log('我可以用CSS3、HTML5还原设计稿');
},
code: function() {
Me.superClass.code.call(this);
console.log(function() {
/**
1. 根据规范来命名如驼峰、_、$等;
2. 使用闭包来避免变量污染;
3. 相同处理逻辑代码抽出来作为一个功能模块;
4. 避免与HTML、CSS产生耦合;
5. 注意代码的性能优化
*/
}.toString().split('n').slice(2, -2).toString().replace(/t/g, '').split(',').join('n'))
},
manage: function() {
console.log('我有一个属于自己的代码库和记录知识点的博客');
},
habit: function() {
console.log('twitter、HTML5Rock、CSS3-trick、W3.org...');
},
enjoy: function() {
console.log('我喜欢打篮球和看NBA,最喜欢的球员是Steve·Nash');
}
});
var me = new Me({
ChineseName: '张楷豪',
EnglishName: 'monkindey',
Birthday: '1993-07',
Email: 'monkindey@163.com',
School: '广东工业大学计算机学院网络工程 11级'
});
console.dir(me);
写一个函数设置cookies
function getCookies(name){
var cookieKeyValueArray = document.cookie.split(";")
for (var i = 0; i < cookieKeyValueArray.length; i++) {
var arr = cookieKeyValueArray[i].split("=");
if (arr[0] == name){
return arr[1];
}
}
}