详解如何较好的使用js


Posted in Javascript onDecember 16, 2016

1 假如浏览器不支持JavaScript怎么办?

a.为什么浏览器会不支持?大部分浏览器都有禁用脚本的功能,例如chrome。

详解如何较好的使用js

b.在js被禁用的情况下要保证网页仍能实现它的核心功能(关键的用户需求)

例子:在一个新窗口里打开链接,可以使用BOM的open()方法

function popUp(winURL) {
 window.open(winURL, "popup", "width=320,height=480");
}

具体的js实现有以下几个方案:

方案一:使用javascript伪协议:<a href="javascript:popUp('http://www.example.com');return false;">Example</a>

方案二:使用内嵌的事件处理函数:<a href="#" onclick="popUp('http://www.example.com');return false;"></a>

以上两种种实现方案,在js被禁用时,“在一个新窗口里打开链接”这个需求就无法满足了。所以,不能为了单纯使用js而滥用js。下面这个实现方案就为js预留出了退路,即所谓平稳退化(留好js被禁后的退路)

方案三:平稳退化<a href="http://www.example.com" onclick="popUp(this.href;return false;)">

2 如何将网页的结构、内容与JavaScript脚本的动作分离开?为什么要分离开?

a.分工明确,各干各的,然后才是协作:

网页结构、内容-由html来做、网页的样式-由CSS来做、网页的行为-由JavaScript来做

b.分离js代码其实很简单,js代码不要求事件必须在html中处理,可以在外部js文件里将一个事件添加到html文档中的某个元素上。例如:

window.onload = paperLinks
 function paperLinks() {
 var links = document.getElementsByTagName("a");
 for (var i=0; i<links.length;i++){
 if (links[i].getAttribute == "popup") {
  linnks[i].onclick = function() {
  popUp(this.getAttribute("href"));
  return false;
  }
 }
 }
 }

3 浏览器的兼容性问题

 新老要通吃,尤其要注意老的,即向后兼容。不同的浏览器对js的支持程度不一样,比如document.getElementsByClassName(classname)IE6就不支持,加一个检查语句就可以检查兼容性问题:if(!document.getElementsByClassName) return false;

4 性能考虑

为什么要考虑脚本执行的性能?性能是永远要考虑的问题,这涉及到你编写的网页能否顺利的加载。

如何保证脚本执行的性能是最优的?

a.尽量少访问dom和少使用标记,例如:少用循环遍历

var links = document.getElementsByTagName("a");
 if (links.length > 0) {
 for (var i=0; i<links.length; i++) {
 //......
 }
}

就要比下面的代码性能要好

if (document.getElementsByTagName("a").length > 0) {
    var links = document.getElementsByTagName("a");
    for (var i=0; i<links.length; i++) {
    //......
    }
}

b.合并脚本(js代码),减少页面加载时发送的请求数量;将<script>标签放置于文档末尾,在</body>结束之前,这样可以让页面加载的快些,且不影响js的加载。

c.压缩脚本,将js代码中不必要的空格、注释删除,甚至可以将变量名简化。可以准备两个版本的js:一个是工作版本,用于修改代码和注释,另一个为精简版本,则用于发布。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
js对数字的格式化使用说明
Jan 12 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
Jul 16 Javascript
Js操作Select大全(取值、设置选中等等)
Oct 29 Javascript
使用jQuery和PHP实现类似360功能开关效果
Feb 12 Javascript
javascript实现简单加载随机色方块
Dec 25 Javascript
jQuery实现的倒计时效果实例小结
Apr 16 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
Feb 10 Javascript
webpack分离css单独打包的方法
Jun 12 Javascript
详解jQuery获取特殊属性的值以及设置内容
Nov 14 jQuery
JavaScript继承的特性与实践应用深入详解
Dec 30 Javascript
小程序云开发教程如何使用云函数实现点赞功能
May 18 Javascript
JS获取表格视图所选行号的ids过程解析
Feb 21 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
Dec 16 #Javascript
详解js的事件处理函数和动态创建html标记方法
Dec 16 #Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
Dec 16 #Javascript
JS限制条件补全问题实例分析
Dec 16 #Javascript
Node.js用readline模块实现输入输出
Dec 16 #Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
Dec 16 #Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
Dec 16 #Javascript
You might like
php和javascript之间变量的传递实现代码
2012/12/19 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
JavaScript实现的拼图算法分析
2019/02/13 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Python开发常用的一些开源Package分享
2015/02/14 Python
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
python使用PyGame模块播放声音的方法
2015/05/20 Python
Python中super关键字用法实例分析
2015/05/28 Python
Python操作csv文件实例详解
2017/07/31 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
python select.select模块通信全过程解析
2017/09/20 Python
python中Switch/Case实现的示例代码
2017/11/09 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
DeinDesign德国:设计自己的手机壳
2019/12/14 全球购物
关于工资低的辞职信
2014/01/14 职场文书
单位未婚证明范本
2014/01/18 职场文书
工作简历自我评价
2015/03/11 职场文书
新年祝酒词大全
2015/08/11 职场文书