详解如何较好的使用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 相关文章推荐
WordPress JQuery处理沙发头像
Jun 22 Javascript
jquery toolbar与网页浮动工具条具体实现代码
Jan 12 Javascript
IE6 hack for js 集锦
Sep 23 Javascript
JS在onclientclick里如何控制onclick的执行
May 30 Javascript
微信小程序 详解页面跳转与返回并回传数据
Feb 13 Javascript
JS中的作用域链
Mar 01 Javascript
详解vue 配合vue-resource调用接口获取数据
Jun 22 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
Feb 23 Javascript
使用JavaScript破解web
Sep 28 Javascript
深入理解JavaScript 箭头函数
May 30 Javascript
layui数据表格跨行自动合并的例子
Sep 02 Javascript
vue 需求 data中的数据之间的调用操作
Aug 05 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
php实现的http请求封装示例
2016/11/08 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
laravel 框架配置404等异常页面
2019/01/07 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
动态样式类封装JS代码
2009/09/02 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
使用python实现对元素的长截图功能
2019/11/14 Python
Tensorflow的常用矩阵生成方式
2020/01/04 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
python time.strptime格式化实例详解
2021/02/03 Python
CSS3实现全景图特效示例代码
2018/03/26 HTML / CSS
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
党员干部承诺书
2014/03/25 职场文书
残疾人小组计划书
2014/04/27 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
贷款工作证明模板
2015/06/12 职场文书
教师远程研修感悟
2015/11/18 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js