性能、JavaScript与html标签分离、平稳退化

性能

  1. 尽量减少DOM访问和标记,减少document.getElementsByTagName()之类方法的使用,把这类方法返回的值存储在变量之中。
  2. 合并脚本、样式文件、图片文件等,一遍减少加载页面时的请求数量。
  3. 压缩脚本。

JavaScript与html标签分离

当我们添加动作时,会有个第一反应:

<div id="div1" onclick="doSomething(this)">Click here</div>
//这边是JavaScript的代码
function doSomething1(node){}
function doSomething2(node){}

但这样是不科学的。当我们需要修改一系列类似的标签,他们有着类似的方法:

<div id="contain">
    <div id="div1" onclick="doSomething1(this)">Click here</div>
    <div id="div2" onclick="doSomething1(this)">Click here</div>
    <div id="div3" onclick="doSomething1(this)">Click here</div>
    <div id="div4" onclick="doSomething1(this)">Click here</div>
    <div id="div5" onclick="doSomething1(this)">Click here</div>
</div>

如果需要把其他方法(比如doSomething2())绑定给div4和div5的onclick事件,就需要面对一些繁琐的工作。

其实我们可以这个样子:

<div id="contain">
    <div id="div1">Click here</div>
    <div id="div2">Click here</div>
    <div id="div3">Click here</div>
    <div id="div4">Click here</div>
    <div id="div5">Click here</div>
</div>
window.onload=function(){
    var divs=documen.getElementById("contain").getElementsByTagName("div");
    for(var i=0;i<divs.length;i++){
        if(divs[i].getAttribute("id").replace("div","")<=3){    //判断是否是div1~div3
            divs[i].onclick=doSomething1;
        }else{
            divs[i].onclick=doSomething2;
        }
    }
}

至此,若还需要对html页面中的元素进行动作添加、修改、删除,在js文件中进行就可以了。

平稳退化

需求:点击上方链接,下方区域出现图片,点不同的链接出现的图片不同。

<ul id="imagegallery">
        <li>
            <a href="images/1.jpg" title="1.jpg"><img src="images/1.jpg"/></a>
        </li>
        <li>
            <a href="images/2.jpg" title="2.jpg"><img src="images/2.jpg"/></a>
        </li>
        <li>
            <a href="images/3.jpg" title="3.jpg"><img src="images/3.jpg"/></a>
        </li>
        <li>
            <a href="images/4.jpg" title="4.jpg"><img src="images/4.jpg"/></a>
        </li>
        <li>
            <a href="images/5.jpg" title="5.jpg"><img src="images/5.jpg"/></a>
        </li>
        <li>
            <a href="images/6.jpg" title="6.jpg"><img src="images/6.jpg"/></a>
        </li>
        <li>
            <a href="images/7.jpg" title="7.jpg"><img src="images/7.jpg"/></a>
        </li>
    </ul>

接下来是js代码:

window.onload=function(){        //遍历ul中的li元素,事件绑定
    if(!document.getElementsByTagName
        ||!document.getElementById
        ||!document.getElementById("imagegallery")){
        return false;
    }
    var gallery=document.getElementById("imagegallery");
    var links=gallery.getElementsByTagName("a");
    for(var i=0;i<links.length;i++){
        links[i].onclick=function(){
            return !showPic(this);
            //这步很关键。<a>便签被点击后是会使页面跳转的,除非触发onclick事件后得到false的返回
            //于是,若js正常执行,则点击<a>标签可看到图片
            //若js被禁用,则点击<a>标签会发生跳转,同样可以看到图片
        }
    }
}
function showPic(whichPic){
    //如果展示图片的区域不存在,则页面跳转,跳到图片处
    if(!document.getElementById("placeHolder"))return false;    
    var source=whichPic.getAttribute("href");
    var placeHolder=document.getElementById("placeHolder");
    placeHolder.setAttribute("src",source);
    if(document.getElementById("description")){
        var text=whichPic.getAttribute("title");
        var description=document.getElementById("description");
        description.firstChild.nodeValue=text;
    }
    return true;
}

无论如何,内容最重要。要保证在js被禁用的情况下,仍然可以浏览到内容。

时间: 2024-10-13 07:28:37

性能、JavaScript与html标签分离、平稳退化的相关文章

平稳退化 前端

window.open()第一个参数为要链接到的url,第二个参数是新窗口的名字,可以在代码里通过这个名字与新窗口进行通信. function popUp(url){ window.open(url,"popup","width=320,height=460") } 要想创建新的浏览器窗口,可使用伪元素JavaScript:,如下所示 <a href="javascript:popUp('http://www.example.com/')"

平稳退化,JS和HTML标记分离,极致性能的JavaScript图片库

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>JavaScript图片库</title> 6 <script type="text/javascript"> 7 <!--平稳退化,JS和HTML标记分离,极致性能的JS图片库--> 8 fu

&quot;javascript:&quot; 伪协议与平稳退化

"javascript:"伪协议是一种非标准化协议,其可以让我们通过一个链接调用javascript 函数.例如:<a href="javascript:pop('http://www.xxx');">Example</a> 但是这样也有一些问题,那就是这种形式在支持伪协议的浏览器中可以使用,但是老旧的浏览器则会尝试打开这个链接并且报错. 同时随着一些用户操作'禁用javascript'(不得不说,部分用户会禁用js以阻止一些网页弹窗,而一些

链接的平稳退化、渐进增强和向后兼容

1.平稳退化<a href="http://www.baidu.com/" title="A fengxz" onclick="popPup(this.getAttribute("href"));return false;">fengxz</a>//HTML function popPup(winURL){    window.open(winURL);        }//JavaScript 即使J

JavaScript之&lt;noscript&gt;标签简介

早期浏览器都面临一个特殊的问题,即当浏览器不支持JavaScript时如何让页面平稳的退化.对这个问题的终极方案就是创造一个<noscript>元素,用以在不支持或支持但禁用了JavaScript的浏览器中显示的替代内容. <noscript> <p>本页面需要浏览器的支持(启用)JavaScript</p> </noscript> 当浏览器不支持或支持但禁用了JavaScript时,html页面就会显示<p></p>标签

FineReport中如何用JavaScript自定义地图标签

在日常使用地图过程中,通常会遇到地图标签,提示点等显示不满足我们的需求,需要进行JavaScript代码编写. 例如:在使用地图过程中,会发现很多地名显示的位置偏离.这时候就需要使用JavaScript进行调控.以黑龙江和内蒙古为例,来介绍下如何在FineReport中利用JavaScript自定义地图标签. 新建地图 以区域地图为例,新建表单,拖入地图(新特性)组件,地图边界选择区域地图下的中国(省级): 数据准备 新建工作簿,添加数据集ds1,SELECT*FROM地图1,选中图表,选择图表

JavaScript替换HTML标签

1.说明 获取HTML字符串(包含标签),通过正则表达式替换HTML标签,输出替换后的字符串 2.实现JavaScript代码 function deleteTag() { var regx = /<[^>]*>|<\/[^>]*>/gm; var tagStr = $("#ul_li").html(); alert("替换之前的字符串:" + tagStr); var result = tagStr.replace(regx,&

HTML中javascript的&lt;script&gt;标签使用方法详解

原文地址:HTML中javascript的<script>标签使用方法详解 只要一提到把JavaScript放到网页中,就不得不涉及Web的核心语言--HTML.在当初开发javascript的时候,Netscape要解决的一个重要问题就是如何做到让JavaScript既能与HTML页面共存,又不影响那些页面在其他浏览器中的呈现效果.经过尝试.纠错和争论,最终的决定就是为Web增加统一的脚本支持.而Web诞生早期的很多做法也都保留了下来,并被正式纳入HTML规范当中. <script&g

每天一个JavaScript实例-tab标签切换

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>每天一个JavaScript实例-tab标签切换</title> <style> .tabcontainer{ padding:5px; width:500px; marg