zoukankan      html  css  js  c++  java
  • -_-#【JS】HTML5 API

    《JavaScript高级程序设计(第3版)》

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <ul class="list">
            <li class="item">1</li>
            <li class="item">2</li>
            <li class="item current">3</li>
        </ul>
        <button id="myButton">button</button>
        <script>
            /**
             * getElementsByClassName()
             * 支持 getElementsByClassName()方法的浏览器有 IE 9+、Firefox 3+、Safari 3.1+、Chrome 和 Opera 9.5+
             */
            +function() {
                var nodeList = document.getElementsByClassName('item current') // item && current
                console.log(nodeList)
                var nodeList = document.getElementsByClassName('item')
                console.log(nodeList)
            }();
    
            /**
             * classList
             * 支持 classList 属性的浏览器有 Firefox 3.6+和 Chrome
             * add(value)
             * contains(value)
             * remove(value)
             * toggle(value)
             */
            +function() {
                var nodeList = document.getElementsByClassName('item')
                nodeList.item(0).classList.add('current')
                nodeList.item(2).classList.remove('current')
            }();
    
            /**
             * document.activeElement document.hasFocus()
             * 实现了这两个属性的浏览器的包括 IE 4+、Firefox 3+、Safari 4+、Chrome 和 Opera 8+
             * 元素获得焦点的方式有页面加载、用户输入(通常是 通过按 Tab 键)和在代码中调用 focus()方法
             * 默认情况下,文档刚刚加载完成时,document.activeElement 中保存的是 document.body 元 素的引用。
             * 文档加载期间,document.activeElement 的值为 null
             * 查询文档获知哪个元素获得了焦点,以及确定文档是否获得了焦点
             * 通过检测文档是否获得了焦点,可以知道用户是不是正在与页面交互
             */
            +function() {
                console.log(document.activeElement)
                console.log(document.hasFocus())
                var button = document.getElementById('myButton')
                button.focus()
                console.log(document.activeElement === button)
                console.log(document.hasFocus())
            }();
    
            /**
             * document.readyState
             * 支持 readyState 属性的浏览器有 IE4+、Firefox 3.6+、Safari、Chrome 和 Opera 9+
             * IE4 最早为 document 对象引入了 readyState 属性。
             * 然后,其他浏览器也都陆续添加这个属性, 最终 HTML5 把这个属性纳入了标准当中
             * Document 的 readyState 属性有两个可能的值
             * loading,正在加载文档
             * complete,已经加载完文档
             */
            +function() {
                if (document.readyState == 'complete') {
                    console.log('complete')
                }
            }();
    
            /**
             * document.compatMode
             * 陆续实现这个属性的浏览器有 Firefox、Safari 3.1+、Opera 和 Chrome
             * 标准模式 CSS1Compat
             * 混杂模式 BackCompat
             */
            if (document.compatMode == 'CSS1Compat') {
                console.log('Standards mode')
            } else {
                console.log('Quirks mode')
            }
    
            /**
             * 作为对 document.body 引用文档的<body>元素的补充,HTML5 新增了 document.head 属性, 引用文档的<head>元素
             * 实现 document.head 属性的浏览器包括 Chrome 和 Safari 5
             */
            var head = document.head || document.getElementsByTagName('head')[0]
            console.log(head)
        </script>
    </body>
    </html>
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <ul class="list">
            <li class="item" data-appId="12345" data-my-name="na">1</li>
            <li class="item">2</li>
            <li class="item current">3</li>
        </ul>
        <div id="box1">box1</div>
        <div id="box2">box2</div>
        <div id="box3" style="margin-top:600px">box3</div>
        <div id="box4">box4</div>
        <script>
            /**
             * document.charseet
             * document.defalutCharset
             * 表示根据默认浏览器及操作系统的设置,当前文档默认的字符集 应该是什么
             * 支持 document.charset 属性的浏览器有 IE、Firefox、Safari、Opera 和 Chrome。
             * 支持 document.defaultCharset 属性的浏览器有 IE、Safari 和 Chrome
             */
            console.log(document.charset, document.defaultCharset)
    
            // dataset
            var firstLi = document.querySelector('.item')
            firstLi.setAttribute('data-appId2', '54321')
            firstLi.setAttribute('data-my-name2', 'nana')
            // chrome DOMStringMap {appid: "12345", myName: "na", appid2: "54321", myName2: "nana"}
            console.log(firstLi.dataset)
            if (firstLi.dataset.appid) {
                firstLi.dataset.appid = 111111
            }
    
            var lastLi = document.querySelectorAll('.item')[2]
            lastLi.dataset.appId = 'data-app-id'
            lastLi.dataset.appid = 'data-appid'
    
            /**
             * innerHTML
             * 但是,不同浏览器返回的文本格式会有所不同。
             * IE 和 Opera 会将所有标签转换为大写形式,
             * 而 Safari、 Chrome 和 Firefox 则会原原本本地按照原先文档中(或指定这些标签时)的格式返回 HTML,包括空格 和缩进。
             * 不要指望所有浏览器返回的 innerHTML 值完全相同
             *
             * 并不是所有元素都支持 innerHTML 属性。
             * 不支持 innerHTML 的元素有:<col>、<colgroup>、 <frameset>、<head>、<html>、<style>、<table>、<tbody>、<thead>、<tfoot>和<tr>。
             * 此 外,在 IE8 及更早版本中,<title>元素也没有 innerHTML 属性
             */
    
            /**
             * outerHTML
             * 支持 outerHTML 属性的浏览器有 IE4+、Safari 4+、Chrome 和 Opera 8+。
             * Firefox 7 及之前版本都不 支持 outerHTML 属性
             */
            document.getElementById('box1').outerHTML = '<p>This is a paragraph.</p>'
    
    
            /**
             * scrollIntoView
             * 支持 scrollIntoView()方法的浏览器有 IE、Firefox、Safari 和 Opera
             */
            setTimeout(function() {
                document.getElementById('box4').scrollIntoView()
            }, 0)
        </script>
    </body>
    </html>
  • 相关阅读:
    我开发过程中用到的工具
    我最近写的DataGrid合并/删除相同列通用函数,跟大家分享
    开源项目- Archive Explorer
    SQLite准备出3.0了!
    软件缺陷管理指南 3
    介绍一些.net好站点
    几个著名java开源缓存系统的介绍
    SQL中的Where,Group By,Order By和Having的用法/区别
    Unix/Linux中Cron的用法
    java中判断字符串是否为纯数字
  • 原文地址:https://www.cnblogs.com/jzm17173/p/3618353.html
Copyright © 2011-2022 走看看