zoukankan      html  css  js  c++  java
  • [译]Javascript的弱点

    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单

    源地址在此:

    https://www.youtube.com/watch?v=PMsVM7rjupU&list=PL6n9fhu94yhUA99nOsJkKXBqokT3MBK0b

    本次的视频主要讨论使用Javascript的弱势之处以及不利的地方

    Javascript主要有两个弱点:

    安全性:Javascript是在客户端机器上运行的.所以可能会有用户恶意使用javascript来做一些不好的事情,比如追踪你的浏览历史记录,盗取你的密码等等.这是人们倾向于禁用Javascript的主要原因之一

    浏览器兼容性:不是所有的浏览器都用同样的规则来处理同一份Javascript代码.这就意味着,功能和用户界面也会因为浏览器的不同而不同.这就是为什么跨浏览器测试这么重要的原因.但是,Javascript的库比如jQuery让这个问题不再那么头痛.

    Javascript浏览器兼容性例子

    例子1:innerText属性被IE和Chrome支持,但是不被Firefox支持.这就意味着ValidatForm()这个我们在第一部分做过的函数只会在IE和Chrome下工作,Firefox下则不会

    function ValidatForm() 
    {
        var ret = true;
        if (document.getElementById("txtFirstName").value == "") 
        {
            document.getElementById("lblFirstName").innerText = "First Name is required";
            ret = false;
        }
        else 
        {
            document.getElementById("lblFirstName").innerText = "";
        }
    
        if (document.getElementById("txtLastName").value == "") 
        {
            document.getElementById("lblLastName").innerText = "Last Name is required";
            ret = false;
        }
        else 
        {
            document.getElementById("lblLastName").innerText = "";
        }
    
        if (document.getElementById("txtEmail").value == "") 
        {
            document.getElementById("lblEmail").innerText = "Email is required";
            ret = false;
        }
        else 
        {
            document.getElementById("lblEmail").innerText = "";
        }
    
        return ret;
    }

    要让以上代码在IE,Chrome或者Firefox下都能工作的话,需要用textContent替换掉innerText属性,如下所示:

    function ValidatForm() 
    {
        var ret = true;
        if (document.getElementById("txtFirstName").value == "") 
        {
            document.getElementById("lblFirstName").textContent = "First Name is required";
            ret = false;
        }
        else 
        {
            document.getElementById("lblFirstName").textContent = "";
        }
    
        if (document.getElementById("txtLastName").value == "") 
        {
            document.getElementById("lblLastName").textContent = "Last Name is required";
            ret = false;
        }
        else 
        {
            document.getElementById("lblLastName").textContent = "";
        }
    
        if (document.getElementById("txtEmail").value == "") 
        {
            document.getElementById("lblEmail").textContent = "Email is required";
            ret = false;
        }
        else 
        {
            document.getElementById("lblEmail").textContent = "";
        }
    
        return ret;
    }

    例子2: 下面的ddlGenderSelectionChanged()只在Chrome和Firefox下工作,但是IE则无法识别该函数

    [!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml..."]
    
    [html xmlns="http://www.w3.org/1999/xhtml"]
    [head runat="server"]
        [title][/title]
        [script type="text/javascript" language="javascript"]
            function ddlGenderSelectionChanged() 
            {
                alert('You selected ' + ddlGender.value);
            }
        [/script]
    [/head]
    [body]
        [form id="form1" runat="server"]
        [div]
            [select id="ddlGender" onchange="ddlGenderSelectionChanged()"]
                [option]Male[/option]
                [option]Female[/option]
            [/select]
        [/div]
        [/form]
    [/body]
    [/html]

    要让这个Javascript函数在所有浏览器中都可用,我们需要做如下调整

    [script type="text/javascript" language="javascript"]
        function ddlGenderSelectionChanged() 
        {
            alert('You selected ' + document.getElementById('ddlGender').value);
        }
    [/script]
    小白前端学习之路
  • 相关阅读:
    jquery css 主菜单样式的跳转
    JS学习笔记-事件绑定
    CAS—认证原理
    uva 1203
    简化delegate写法
    使用apache htpasswd生成加密的password文件,并使用.htaccess控制文件夹訪问
    菜鸟学Java(二十)——你知道long和Long有什么差别吗?
    【spring cloud】【spring boot】网管服务-->配置文件添加endpoints.enabled = false,SpringBoot应用监控Actuator使用的安全隐患
    【Devops】【docker】【CI/CD】Jenkins源码管理,设置gitlab上项目的clone地址 + jenkins构建报错:Please make sure you have the correct access rights and the repository exists.
    【Devops】【docker】【CI/CD】jenkins源码管理,添加SSH地址后报错+Jenkins构建报错:Please make sure you have the correct access rights and the repository exists.
  • 原文地址:https://www.cnblogs.com/otakuhan/p/7623170.html
Copyright © 2011-2022 走看看