详解如何较好的使用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实现精确到秒的倒计时效果
May 29 Javascript
函数四种调用模式以及其中的this指向
Jan 16 Javascript
jQuery实现web页面樱花坠落的特效
Jun 01 jQuery
基于Vue单文件组件详解
Sep 15 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
Apr 25 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
May 31 jQuery
基于Vue-cli快速搭建项目的完整步骤
Nov 03 Javascript
基于vue实现web端超大数据量表格的卡顿解决
Apr 02 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
May 14 Javascript
微信小程序-可移动菜单的实现过程详解
Jun 24 Javascript
微信小程序加载机制及运行机制图解
Nov 27 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
Dec 26 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
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
一个简单且很好用的php分页类
2013/10/26 PHP
PHP开发框架kohana中处理ajax请求的例子
2014/07/14 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
jquery中动态效果小结
2010/12/16 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
Python实现简单遗传算法(SGA)
2018/01/29 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
详解Python 函数参数的拆解
2020/09/02 Python
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
个人党性剖析材料
2014/02/03 职场文书
销售人员获奖感言
2014/02/05 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
毕业典礼演讲稿
2014/05/13 职场文书
经典演讲稿汇总
2014/05/19 职场文书
企业法人代表证明书
2014/09/27 职场文书
白酒代理协议书范本
2014/10/26 职场文书
扬州个园导游词
2015/02/06 职场文书
大学生自荐信范文
2015/03/05 职场文书
常住证明范本
2015/06/23 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle