详解如何较好的使用js

 更新时间:2016年12月16日 10:08:09   作者:yangtoude  
本文将对在网页中引用js常会出现的问题进行汇总,并提出解决问题的具体方案,有助于我们更好的学习和使用js,需要的朋友一起来看下吧

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

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

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中的[]()+!

    深入分析下javascript中的[]()+!

    本文是笔者遇到的一个很无奈的题目之后,不得不仔细研究一番,有需要的小伙伴来参考下吧。
    2015-07-07
  • js实现键盘Enter键提交表单的方法

    js实现键盘Enter键提交表单的方法

    这篇文章主要介绍了js实现键盘Enter键提交表单的方法,涉及javascript键盘事件的相关操作技巧,需要的朋友可以参考下
    2015-05-05
  • JavaScript监听文本框回车事件并过滤文本框空格的方法

    JavaScript监听文本框回车事件并过滤文本框空格的方法

    这篇文章主要介绍了JavaScript监听文本框回车事件并过滤文本框空格的方法,涉及javascript操作文本框获取、清空及删除空格的技巧,需要的朋友可以参考下
    2015-04-04
  • 深入浅析Bootstrap列表组组件

    深入浅析Bootstrap列表组组件

    列表组是灵活又强大的组件,不仅能用于显示一组简单的元素,还能用于复杂的定制的内容。本文给大家介绍Bootstrap列表组组件,感兴趣的朋友一起学习吧
    2016-05-05
  • JavaScript中的Promise详解

    JavaScript中的Promise详解

    这篇文章主要介绍了JavaScript中的Promise使用详解,promise对象是JS进阶学习中的重要知识点,需要的朋友可以参考下
    2021-10-10
  • JavaScript实现带缓冲效果的随屏滚动漂浮广告代码

    JavaScript实现带缓冲效果的随屏滚动漂浮广告代码

    这篇文章主要介绍了JavaScript实现带缓冲效果的随屏滚动漂浮广告代码,通过JavaScript结合时间函数动态响应页面元素滚动事件实现悬浮广告的缓冲漂浮效果,非常简单实用,需要的朋友可以参考下
    2015-11-11
  • javascript中关于去重操作的使用

    javascript中关于去重操作的使用

    这篇文章主要介绍了javascript中关于去重操作的,在JS中关于数据去重操作的使用是非常常用,也是非常重要的点,一般情况下关于对数组去重点操作是最常用的,下文我们就来介绍js去重相关内容,需要的朋友可以参考下
    2022-04-04
  • js canvas实现适用于移动端的百分比仪表盘dashboard

    js canvas实现适用于移动端的百分比仪表盘dashboard

    这篇文章主要为大家详细介绍了js canvas实现适用于移动端的百分比仪表盘dashboard,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • 纯css下拉菜单 无需js

    纯css下拉菜单 无需js

    这篇文章主要为大家详细介绍了纯css下拉菜单代码,无需js,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • electron项目中实现视频下载保存到本地的方式

    electron项目中实现视频下载保存到本地的方式

    这篇文章主要介绍了electron项目中实现视频下载保存到本地的两种实现方式,每种方式结合实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2024-07-07

最新评论