在网页上点击鼠标右键,选择菜单中的"查看源文件",就可以通过记事本看到网页的实际内容。可以看到网页实际上只是一个纯文本文件。它通过各式各样的标记对页面上的文字、图片、表格、声音等元素进行描述(例如字体、颜色、大小),而浏览器则对这些标记进行解释并生成页面,于是就得到你现在所看到的画面。为什么在源文件看不到任何图片?网页文件中存放的只是图片的链接位置,而图片文件与网页文件是互相独立存放的,甚至可以不在同一台计算机上。
需求:
页面不可见时,例如切换浏览器页签、最小化浏览器,暂停所有定时器;页面显示时,再启动定时器。
一个解决方案如下:
constuuid=(()=>{
letno=0;
return()=>no++;
})();
constoriginSetInterval=window.setInterval;
constoriginClearInterval=window.clearInterval;
consttimers=[];
conststartTimers=()=>
timers.forEach(t=>{
t.originIntervalId=originSetInterval(
t.fn,
t.ms
);
});
conststopTimers=()=>
timers.forEach(t=>{
originClearInterval(t.originIntervalId);
});
document.addEventListener(
"visibilitychange",
()=>
document.visibilityState==="visible"
?startTimers()
:stopTimers()
);
window.setInterval=(fn,ms)=>{
constoriginIntervalId=
document.visibilityState==="visible"
?originSetInterval(fn,ms)
:undefined;
constid=uuid();
timers.push({
fn,
ms,
originIntervalId,
id
});
returnid;
};
window.clearInterval=id=>{
constt=timers.find(t=>t.id===id);
originClearInterval(t.originIntervalId);
timers.splice(timers.indexOf(t),1);
};
覆写setInterval和clearInterval,不用改已有代码,所有定时器就都能自动启停。
但我不推荐在项目中这么做,宁愿麻烦点,写个setSmartInterval,全局替换setInterval。原因有很多,例如:
1可能影响第三方库
2没法再用原生的setInterval
3新人培训成本增加
4……
其中,我最看重的是:这么做导致代码行为出人意料。当一个东西和经验认知不一样时,使用它要付出更多的思考。每次用setInterval,都会想一下它和原生的区别。看起来是小事,却会打断你的思路。“Don'tmakemethink”对于代码设计同样重要。
从08年开始,国内网页游戏开始不断兴起,网页游戏(Webgame)又称web游戏,无端网游,简称页游。网页游戏也是需要重视水平的,如音效的筛选、恰到好处的乐曲与音效搭配、以及良好的结构平台等等,有了这些元素,才能做出一个好的网页游戏,同时也会引来更多的浏览人数。网页游戏的出现让中国进入了一个新的网络游戏平台,也进入了一个页游发展的竞争时代。