1: 请实现,鼠标点击页面中的任意标签,alert该标签的名称.(注意兼容性)
document.onclick = function(e){
var e = e||event;
var o = e['target'] || e['srcElement']; //srcElement/target:事件源,就是发生事件的元素; FF下是target,IE下是srcElement
alert(o.tagName.tolowerCase());
}
2: 请指出一下代码的性能问题,并经行优化
var info="腾讯拍拍网(www.paipai.com)是腾讯旗下知名电子商务网站。";
info +="拍拍网于2005年9月12日上线发布,";
info +="2006年3月13日宣布正式运营,"; //仔细观察info这个变量,发现它每次都要自加字符串,如果字符串很大的又很多的话会非常影响性能的
info +="是目前国内第二大电子商务平台。";
info=info.split(",");
for(var i=0; i<info.length; i++) {
alert(info[i]);
}
优化方案:
//对于js中的string类型,属于基本类型,因此一般情况下他们是存放在栈上的。如果字符串很大,info会每次变成一个很长的字符串,会很慢。 如果用引用类型数组来存放则好很多,如:
var temp=[];
temp.push("腾讯拍拍网(www.paipai.com)是腾讯旗下知名电子商务网站。"); //temp只是一个指向堆上数组的指针 temp.push("拍拍网于2005年9月12日上线发布,");
temp.push("2006年3月13日宣布正式运营,");
temp.push("是目前国内第二大电子商务平台。");
temp.join("");
alert(temp);
//对处理大字符串连接问题都可以采取这种思路
3: 请给出异步加载js方案,不少于两种。
1.defer (仅限于IE)
2.async (Html5的script标签的属性)
3.创建script,引进脚本文件
function loadScript(url,callback){
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
document.body.appendChild(script);
if(script.readyState){
script.onreadystatechange = function(){
if(script.readyState == 'loaded' || script.readyState == 'complete'){
script.onreadystatechange = null;
callback();
}
}
}else{
script.onLoad = function(){
callback();
}
}
}
4: 请写出jQuery绑定事件的方法,不少于两种
$().bind() //jQuery 扫描文档找到所有 $(‘a’) 元素,然后给每一个找到的元素的 click 事件绑定处理函数。
$('a').live('click', function() { alert("That tickles!") }); //jQuery绑定处理函数到 $(document) 元素,并把 ‘click’ 和 ‘a’ 作为函数的参数。有事件冒泡到document节点的时候,检查这个事件是不是 click 事件,target element能不能匹配 ‘a’ css选择器,如果两个条件都是true,处理函数执行
$('#container').delegate('a', 'click', function() { alert("That tickles!") }); //jQuery扫描文档找到 $(‘#container’),绑定处理函数到他的 click 事件,’a’ css选择器作为函数的参数。当有事件冒泡到 $(‘#container’),检查事件是不是 click,并检查target element是不是匹配css选择器,如果两者都符合,执行函数。
综上,$(‘a’).live()与$(document).delegate(‘a’)很相似,很小的地方还是有不同,delegate的效率高一点
5: 请设计一套方案,用于确保页面中JS加载完全。