后端程序员看前端想死(二)进入页面之后js分析

时间:2023-01-13 13:54:19

在上一篇中分析了一下以网页的组成、header中引入的乱七八糟的东西,现在进入到js中进行分析了

tuhooo啊,你是要搞前端了么?

nonono,好玩,学一下

打开页面之后执行js的几种方法

直接写到html的body标签中

 <body onload="myfunction()">
<html> <body onload="func1();func2();func3();"> </body> </html>

在js语句中调用

 <script type="text/javascript">
function myfun() {
alert("this window.onload");
}
/*用window.onload调用myfun()*/
window.onload = myfun;//不要括号
</script>
 <script type="text/javascript">
window.onload=function(){
func1();
func2();
func3(); }
</script>

jQuery的方法

整个页面的document全部加载完成以后执行。不幸的这种方式不仅要求页面的DOM tree全部加载完成,而且要求所有的外部图片和资源全部加载完成。更不幸的是,如果外部资源,例如图片需要很长时间来加载,那么这个js方法执行感觉就比较慢了。也就是说这是一种最严谨的页面加载完再执行方法的方法。

 window.onload =function() {
$("table tr:nth-child(even)").addClass("even"); //这个是jquery代码
};

仅只需要加载所有的DOM结构,在浏览器把所有的HTML放入DOM tree之前就执行方法。包括在加载外部图片和资源之前。

 $(document).ready(function() {
$("table tr:nth-child(even)").addClass("even"); //任何需要执行的js特效
});

还有一种简写方式

 $(function() {
$("table tr:nth-child(even)").addClass("even"); //任何需要执行的js特效
});

然后我看了下,还真有一个地方有上面的某个写法:

后端程序员看前端想死(二)进入页面之后js分析

我擦,jQuery选择器忘了,a[rel*=lightbox]是干啥的?

好像找遍了都没有找到a[rel*=lightbox]的元素啊

先不管

另一个问题,html加载与js的执行顺序问题,先列出这个问题,不深究

来,下面的js一个个看

后端程序员看前端想死(二)进入页面之后js分析

1. ck-karma.js

Karma 是Google 开源的一个基于Node.js 的 JavaScript 测试执行过程管理工具(Test Runner)。该工具可用于测试所有主流Web浏览器,也可集成到 CI (Continuous integration)工具,也可和其他代码编辑器一起使用。

Karma 可以在不同的桌面或移动设备浏览器上,或在持续集成的服务器上测试 JavaScript 代码。Karma 支持 Chrome、ChromeCanary、 Safari、Firefox、 IE、Opera、 PhantomJS,知道如何捕获浏览器正使用的默认路径,这些路径可能在启动器配置文件被忽视(overridden)。Karma 就是一个可以和多重测试框架协作的测试执行过程管理工具,它有针对Jasmine、 Mocha 和AngularJS 的适配器,它也可以与 Jenkins 或 Travis 整合,用于执行持续集成测试。

 function ckratingcreateXMLHttpRequest(){
var xmlhttp = null;
try {
// Moz supports XMLHttpRequest. IE uses ActiveX.
// browser detction is bad. object detection works for any browser
// 检测对象的方式来检测浏览器是啥
console.log("detect browser")
xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
// browser doesn’t support ajax. handle however you want
//document.getElementById("errormsg").innerHTML = "Your browser doesnt support XMLHttpRequest.";
// This won't help ordinary users. Turned off
// alert("Your browser does not support the XMLHttpRequest Object!");
}
return xmlhttp;
} var ckratingXhr = ckratingcreateXMLHttpRequest(); // 这个会执行的

2. colorbox.js

这个也是jQuery的动画效果

3. postviews-cache.js

 jQuery.ajax({
type:"GET",
url:viewsCacheL10n.admin_ajax_url,
data:"postviews_id="+viewsCacheL10n.post_id+"&action=postviews",
cache:!1
});

这个是向后台发了一个ajax请求,作用不得而知,会返回一个递增的数字,目前大概有130万,难道是访问量

4. ready.js

 /*!
* domready (c) Dustin Diaz 2012 - License MIT
*/
! function(a, b) {
console.log("a = " + a);
typeof module != "undefined" ? module.exports = b() : typeof define == "function" && typeof define.amd == "object" ? define(b) : this[a] = b()
}("domready", function(a) {
function m(a) {
l = 1;
while (a = b.shift())
a()
}
var b = [],
c, d = !1,
e = document,
f = e.documentElement,
g = f.doScroll,
h = "DOMContentLoaded",
i = "addEventListener",
j = "onreadystatechange",
k = "readyState",
l = /^loade|c/.test(e[k]); console.log("domready.js"); return e[i] && e[i](h,
c = function() {
e.removeEventListener(h, c, d), m()
},
d), g && e.attachEvent(j, c = function() { /^c/.test(e[k]) && (e.detachEvent(j, c), m()) }), a = g ? function(c) {
(self != top) ? l ? c() : b.push(c) :
function() {
try {
f.doScroll("left")
} catch (b) {
return setTimeout(
function() {
a(c)
},
50)
}
c()
}()
} : function(a) {
l ? a() : b.push(a)
}
})

请原谅我js写的少,这他妈是什么鬼,感觉像是dom加载完成之后执行的动作,但是这是要干啥呢?

5. easing.js

后端程序员看前端想死(二)进入页面之后js分析

学前端的真苦逼,这都是啥啊

jQuery Easing是一款比较老的jQuery插件,在很多网站都有应用,尤其是在一些页面滚动、幻灯片切换等场景应用比较多。它非常小巧,且有多种动画方案供选择,使用简单,而且免费。

6. superfish.js

这个是用来实现多级菜单的

后端程序员看前端想死(二)进入页面之后js分析

我感觉好像自己写的没几个,都是用的插件或者别人的东西啊

7. validate.js

表单验证的,也是一个插件

后端程序员看前端想死(二)进入页面之后js分析

我也是服气了,前端戏真多

8. touchswipe.js

效果描述:

jquery.touchSwipe.js插件,适合手机客户端手势上下滑屏的jQuery插件

压缩后只有11KB大小,敏感度也较高,非常适合懒人们操作

使用方法:

1、将head中的css样式引入到你的网页中

2、将body中的两个js引入到你的页面底部即可

(注意:jquery.touchSwipe.min.js插件路径保持正确即可

9. caroufredsel.js

特点: 完全可定制换肤,充满了自定义事件。 自动滚动或使用按钮,按键,鼠标滚轮,或通过拖动和刷卡。 可选responsible/fluid/liquid。 支持可变项目的大小。 内置键盘和鼠标导航和分页。 内置9个滚动,包括淡入淡出,淡入淡出的效果等。 能够使用CSS3过渡。 对齐(左/中/右)内的可用宽/高的项目。 动态添加和删除的项目。

10. flexslider.js

Flexslider是一款基于的jQuery内容滚动插件。它能让你轻松的创建内容滚动的效果,具有非常高的可定制性。开发者可以使用Flexslider轻松创建各种图片轮播效果、焦点图效果、图文混排滚动效果。

11. jplayer.js

jPlayer是一个JavaScript写的完全免费和开源 (MIT) 的jQuery多媒体库插件 (现在也是一个Zepto插件) jPlayer可以让你迅速编写一个跨平台的支持音频和视频播放的网页. jPlayer的丰富API可以让你创建一个个性化多媒体应用,因此也获得越来越多的社区成员的支持和鼓励。

12. fitvids.js

在制作快速响应式网站时,文字、图片等元素都可以很容易的响应屏幕尺寸的变化,唯独视频比较麻烦。比如通过embed方式加载优酷、土豆甚至YouTube视频时,使用max-width:100%的方式不能保证视频在任何设备上都能跟随屏幕尺寸缩放,这时可以借助js脚本来实现,这就是今天要介绍的FitVids.JS。

13. selectnav.js

响应下拉导航SelectNav.js专为手机和小屏幕设备。SelectNav.js是一个JavaScript插件,让您转换你的网站导航到下拉菜单选择。媒体查询一起使用,它可以帮助你创建一个节约空间,为小屏幕设备上的导航响应。灵感来自 TinyNav.js,它是从头开始重写到成为jQuery的独立的和可定制的。 特点 独立 - 无需外部库或其他依赖条件 只有1.5KB,gziped缩小0.8KB 可定制 - 使其满足您的需求 兼容 -  IE 6+, Firefox 3.6+, Chrome 4+, Safari 3+, Mobile Safari iOS 3.2+, Android 2.3+ Browser, Opera Mobile, Opera Mini

这个我知道是哪个了,就是页面缩得很小的时候,可以用下拉列表来导航的

后端程序员看前端想死(二)进入页面之后js分析

14. effects.js

effects.js中提供了两种类型的动画效果,一种称为核心效果(core effect),一种称为组合效果(combination effect)
顾名思义,core effect提供了一种比较单一的效果,例如元素的渐变隐藏、元素的移动等等,所有的core effect都是继承于effect.base 这个基类,effect.base类实现了浏览器中用js表现一段动画效果的整个逻辑,而每个具体的core effect类实现该效果的表现代码就可以了

最后还有两个js点击事件

 <div id="full-btm" style="position:fixed; left:50%; top:550px;  z-index:100; text-align:center; cursor:pointer;">
<a><img src="./images/back-btm.png" width="" border="" alt="跳到底部" title="跳到底部"></a>
</div> <script type="text/javascript">
jQuery('#full-btm').click(function(){
jQuery('html, body').animate({scrollTop:jQuery(document).height()}, 'slow');
return false;
});
</script> <div id="full-top" style="position:fixed; left:50%; top:520px; margin-left:495px; z-index:100; text-align:center; cursor:pointer;">
<a><img src="./images/back-top.png" width="" border="" alt="返回顶部" title="返回顶部"></a>
</div> <script type="text/javascript">
jQuery('#full-top').click(function(){
jQuery('html, body').animate({scrollTop:0}, 'slow');
return false;
});
</script>

分别是返回底部和返回顶部的,两个图片用的都是position为fix的定位