【web前端开发】浏览器原生API,DOM,Javascript,HTML5,CSS 代码运行实例参考
admin
2023-02-10 17:00:11
0次


前言


本篇博文的目的是搜集并汇总一些讲述 web 前端开发技术的书籍中的实例代码,并验证记录其在不同 web 浏览器中的运行结果,以供日后编程参考。

为避免版权问题,所有涉及到的代码片段,都会给出相应的出处和至少在3个浏览器(这里指的是:Microsoft Internet Explorer,Mozilla Firefox,Google Chrome )中的运行结果。

对于比较难以理解的代码片段,会加入自己的思考和总结。另外给出相关作者的联系 e-mail,可以向作者提问,讨论。


                             《准备工具》


gedit 文本编辑器         

用于 linux 环境下的 HTML 文档编写。


firefox 浏览器 

用于运行 HTML 文档并查看输出结果。


firefox 浏览器的 firebug 插件

用于查看 HTML 文档的 DOM 树及其节点,调试 javascript 代码(后面详述),输出CSS样式等等。


IE 浏览器      

用于运行 HTML 文档并查看输出结果。


chrome 浏览器  

用于运行 HTML 文档并查看输出结果。


下面是测试环境使用的 firefox,firebug 版本,以及官方下载地址:

注意,对于部分涉及 HTML5 新特性的代码,建议更新到与下面一致或者更高的版本,才能正确运行或显示预期的输出结果。



【web前端开发】浏览器原生API,DOM,Javascript,HTML5,CSS 代码运行实例参考



对于 IE 以及 chrome 浏览器,要查看 javascript 的运行结果,可以将代码作为 document.write() 的参数调用,这将在浏览器内部窗口为用户显示结果。

document.write()也可以用于同步创建,添加节点到 DOM 树中。

需要注意的是,write()方法会在浏览器加载页面时执行,它会阻塞(中断)对 HTML 文档的解析,优先将传递给它的参数或表达式运行结果输出到页面上,然后

再接续解析 HTML 文档。


对于 firefox 浏览器,在该 html 文档上右击,打开方式选择以 firefox 打开;前面如果已经正确安装 firebug 插件,并且重启 firefox,那么在打开该文档的时刻也会启动 firebug ,建议将其调整在独立的窗口中运行 firebug ,避免在 firefox 主界面下方显示,不便于阅读和调试代码。

在 firebug 的“控制台”选项卡中的底部,键入 console.log() ,将要测试运行的代码块作为它的参数调用,回车运行,即可在上面窗口得到输出结果,包括出错提示信息,如下图所示:

这是一种快速实时调试 javascript 代码的方法,并且经测试无误后可以立即集成,部署到你的产品现有代码中,建议熟练掌握。




【web前端开发】浏览器原生API,DOM,Javascript,HTML5,CSS 代码运行实例参考



注意,在 firebug 的控制台选项卡底部的命令行编辑器中,使用doucument.write()来输出的运行结果,不会显示在控制台上,相反,它会输出到HTML 页面上。只有使用 firebug 内部支持的 console.log,才能直接在控制台上输出:


【web前端开发】浏览器原生API,DOM,Javascript,HTML5,CSS 代码运行实例参考

 

由此可知,console.log()与doument.write()在输出的位置上不同,而作用是一样的:例如后者可用以 "string",的双引号字符串形式作为其参数输出,前者同样可以,只不过是输出到控制台窗口罢了。


还有就是,在 firebug 命令行编辑器中可以直接输入并运行 javascript,运行结果就会反映到 HTML 页面上。

不需要像传统的浏览器测试法那样,还要加上
        
        
        body {
        background-color: #AFEFEF;  /* use a  light grey background */
        color:           #117755;  /* dark blue test */
        font-family:      Verdana, Helvetica, Arial, sans-serif;
        font-size:      110%;
        }
        
        
        h2 {
        background-color: #CECECE  /* use dark gray */
        ;color:       #000099
        ;border-top:      10px solid #FACABD /* thin blue broder on top */
        ;border-bottom:      5px solid #000099 /* thin blue broder on bottom */
        ;padding:      10px
        ;
        }
        
    
    
    
        

Using Firebug to debugging javascript and coding errors


        

shayi2007
        
        
        
        document.write("this was printed from the html <body> element" + "");
        displayhello();
        /*console.log("shayi")*/
        
        
    


为了方便测试,源码部分有几处略做更动,但并不影响分析与调试工作。

通过阅读源码,可以了解到,

在该 HTML 文档的头部,也就是以 标签定义的部分,将该页面的标题以

标签进行定义,然后通过 <script> 标签引入 javascript,在其中自定义一个叫做 displayhello() 的函数,该函数首先打印一串文字,然后调用浏览器实现的 javascript 内置函数 API,也就是 prompt(),用以弹出一个提示用户输入信息的对话框,并且将获取的字符串保存在一个变量中,最后向页面上输出这个变量的内容,以及后面自定义的字符串。<br /></span></p><p><span >接着,定义一个内置的 CSS 样式表,主要是用于设定 HTML 文档体,也就是以 <body> 标签起始的部分,它的背景颜色,字体颜色,字体类型,大小等。</span></p><p><span >对于 <body> 标签内部的 <h2> 标签,也就是文档体的主要段落标题部分,使用独立的 CSS 样式定义,注意,它会覆盖对 <body> 部分的样式定义。</span></p><p><span >在文档体中,以 <h2> 标签来突出显示主题名称,这个主题名称将套用前面在文档头中为 <h2> 定义的样式。</span></p><p><span >可以看到,在文档体中也可以引入 javascript,向页面输出信息,并且调用在文档头部分定义的函数。</span></p><p><br /></p><p><span ><strong>下面,我们刻意在该文档源码的 CSS 部分以及 javascript 部分制造编程的语法错误,借此来测试 firebug 的错误分析与处理能力:</strong></span></p><p><span >对于 linux / firefox 开发环境,我们只需以 firefox 打开存储在本地的 HTML 文档,然后启动 firebug 即可:</span></p><p><br /><span ></span></p><p><span ><img src="https://cache.yisu.com/upload/information/20200302/42/6766.jpg" alt="【web前端开发】浏览器原生API,DOM,Javascript,HTML5,CSS 代码运行实例参考"></span><br /></p><p><br /></p><p><br /></p><p><span ><img src="https://cache.yisu.com/upload/information/20200302/42/6768.jpg" alt="【web前端开发】浏览器原生API,DOM,Javascript,HTML5,CSS 代码运行实例参考"></span><br /></p><p><br /></p><p><br /></p><p><span >参考上面的 HTML 源码,假设我们在第30行的 </span><code class="html plain"><span >background-color</span></code><span > 属性后面,遗漏了冒号(:) ,然后让浏览器重新加载页面, 此时 firebug 捕捉到的 CSS 语法错误,如下所示:</span></p><p><span ><br /></span></p><p><br /></p><p><span ><img src="https://cache.yisu.com/upload/information/20200302/42/6769.jpg" alt="【web前端开发】浏览器原生API,DOM,Javascript,HTML5,CSS 代码运行实例参考"></span></p><p><br /></p><p><br /></p><p><span ><strong>注意,参考上面源码的第31~34行,可以发现,我故意将分号(;)写在了每个 CSS 属性的前面。</strong></span></p><p><span ><strong>常规的做法,应该是在上一条 CSS 属性的结尾部分以分号结束,但这里为何要写在下一条 CSS 属性的前面?</strong></span></p><p><span ><strong>其实,这种写法才符合浏览器解析 CSS 样式的标准逻辑与流程(至少 firefox 是如此),我们可以通过刻意遗漏一个其中的分号来验证,</strong></span></p><p><span ><strong>例如,我们将源码中第31行最前面的分号丢失,然后用 firefox 重新加载 HTML 文档,查看 firebug 捕捉到的错误提示信息,如下:</strong></span></p><p><span ><strong><br /></strong></span></p><p><br /><span ></span></p><p><span ><img src="https://cache.yisu.com/upload/information/20200302/42/6772.jpg" alt="【web前端开发】浏览器原生API,DOM,Javascript,HTML5,CSS 代码运行实例参考"><strong><br /></strong></span></p><p><span ><br /></span></p><p><span >上面的例子也说明,有时通过人为制造错误,并且观察 firebug 的输出,可以学习到浏览器进行语法,词法,语义,以及对其它相关资源进行解析的逻辑。<br /></span></p><p><span >从某种意义上而言,这对于前端程序员编写高效率且安全的代码,还是有帮助的。<br /></span></p><p><span ><strong><br /></strong></span></p><p><span ></span></p><p><span ><strong>*****参考上面的源码,假设在第15行中,丢失了变量 thisname 与其后面字符串之间的连接运算符(+ 号),这会导致 javascript 语法错误。</strong></span></p><p><span >并且,由于该错误是出现在函数 displayhello() 的定义中,只要这个函数其中任何部分出现语法错误, firebug 都会将该函数视为“未定义”,导致后面调用该函数时无法执行,程序流程会中断在该函数调用点。</span></p><p><span >下面的截图验证了这部分内容:</span></p><p><br /><span ></span></p><p><span ><img src="https://cache.yisu.com/upload/information/20200302/42/6773.jpg" alt="【web前端开发】浏览器原生API,DOM,Javascript,HTML5,CSS 代码运行实例参考"><br /></span></p><p><span ><br /></span></p><p><br /><span ></span></p><p><span ><strong><img src="https://cache.yisu.com/upload/information/20200302/42/6776.jpg" alt="【web前端开发】浏览器原生API,DOM,Javascript,HTML5,CSS 代码运行实例参考"></strong></span></p><p><br /><span ></span></p><p><span ><strong><br /></strong></span></p> <!--end::Text--> </div> <!--end::Description--> <div class="mt-5"> <!--关键词搜索--> </div> <div class="mt-5"> <p class="fc-show-prev-next"> <strong>上一篇:</strong><a href="/kaifa/show-102585.html">Bootstrap学习:Bootstrap 环境安装</a><br> </p> <p class="fc-show-prev-next"> <strong>下一篇:</strong><a href="/kaifa/show-102587.html">CSS3/HTML5代码实例-叮当猫图案-</a> </p> </div> <!--begin::Block--> <div class="d-flex flex-stack mb-2 mt-10"> <!--begin::Title--> <h3 class="text-dark fs-5 fw-bold text-gray-800">相关内容</h3> <!--end::Title--> </div> <div class="separator separator-dashed mb-9"></div> <!--end::Block--> <div class="row g-10"> </div> </div> <!--end::Table widget 14--> </div> <!--end::Col--> <!--begin::Col--> <div class="col-xl-4 mt-0"> <!--begin::Chart Widget 35--> <div class="card card-flush h-md-100"> <!--begin::Header--> <div class="card-header pt-5 "> <!--begin::Title--> <h3 class="card-title align-items-start flex-column"> <!--begin::Statistics--> <div class="d-flex align-items-center mb-2"> <!--begin::Currency--> <span class="fs-5 fw-bold text-gray-800 ">热门资讯</span> <!--end::Currency--> </div> <!--end::Statistics--> </h3> <!--end::Title--> </div> <!--end::Header--> <!--begin::Body--> <div class="card-body pt-3"> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/weixiu/show-14537931.html" class="text-dark fw-bold text-hover-primary fs-6">空调连续工作多久需要停机休息</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/weixiu/show-14537930.html" class="text-dark fw-bold text-hover-primary fs-6">空调哪个符号是除湿的</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/weixiu/show-14537929.html" class="text-dark fw-bold text-hover-primary fs-6">格力空调多长时间加一次氟利昂</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/weixiu/show-14537928.html" class="text-dark fw-bold text-hover-primary fs-6">空调用多长时间需要加氟一次</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/uploadfile/202609/83c0c0800a58e3b.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/news/show-14537927.html" class="text-dark fw-bold text-hover-primary fs-6">格调生活·C标思享荟:卡萨帝在...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/uploadfile/202609/bd5bdfc6ba7da8c.jpg')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/news/show-14537926.html" class="text-dark fw-bold text-hover-primary fs-6">品牌价值破千亿、高端份额持续领...</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/weixiu/show-14537925.html" class="text-dark fw-bold text-hover-primary fs-6">空调主板坏了修800还是换新的</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/weixiu/show-14537924.html" class="text-dark fw-bold text-hover-primary fs-6">空调开多久需要休息多长时间</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/weixiu/show-14537923.html" class="text-dark fw-bold text-hover-primary fs-6">中央空调多长时间清洗一次</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...</span> </div> <!--end::Title--> </div> <!--begin::Item--> <div class="d-flex flex-stack mb-7"> <!--begin::Symbol--> <div class="symbol symbol-60px symbol-2by3 me-4"> <div class="symbol-label" style="background-image: url('/uploadfile/[db:缩略图]')"></div> </div> <!--end::Symbol--> <!--begin::Title--> <div class="m-0"> <a href="/weixiu/show-14537922.html" class="text-dark fw-bold text-hover-primary fs-6">中央空调氟利昂多久加一次</a> <span class="text-gray-600 fw-semibold d-block pt-1 fs-7">看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...</span> </div> <!--end::Title--> </div> </div> <!--end::Body--> </div> <!--end::Chart Widget 35--> </div> <!--end::Col--> </div> </div> <!--end::Content container--> </div> <!--end::Content--> </div> <!--end::Content wrapper--> <!--begin::Footer--> <div id="kt_app_footer" class="app-footer"> <!--begin::Footer container--> <div class="app-container container-xxl d-flex flex-column flex-md-row flex-center flex-md-stack py-3"> <!--begin::Copyright--> <div class="text-dark order-2 order-md-1"> <span class="text-muted fw-semibold me-1">2026 ©</span> 太卓网<a href="http://www.yexian114.com/">叶县生活网</a> <a href="https://www.wxx86.cn/">编程知识网</a> <a href="http://www.kcwzh.com/">开创游戏网</a> <a href="https://www.caiding5.net">菜丁网</a><a href="http://cn.office369.com">奥飞商务网</a> <a href="http://www.zlnznjj.com/">众乐知识网</a><a href="http://www.lhjia.com/">乐活家</a><a href="http://www.nengyuan100.com/">能源100网</a> <a href="http://it.tdroid.net/">泰达科技</a><a href="http://cn.tdroid.net/">太卓开发网</a><a href="http://cn.yuansudz.com/">元素科技网</a><a href="http://www.80hlw.com/">八零商务网</a><a href="http://game.tdroid.net/">土豆游戏网</a> </div> <!--end::Copyright--> <!--begin::Menu--> <ul class="menu menu-gray-600 menu-hover-primary fw-semibold order-1"> <li class="menu-item"> <a href="/news" target="_blank" class="menu-link px-2">科技资讯</a> </li> <li class="menu-item"> <a href="/jishu" target="_blank" class="menu-link px-2">技术分享</a> </li> <li class="menu-item"> <a href="/kaifa" target="_blank" class="menu-link px-2">程序开发</a> </li> <li class="menu-item"> <a href="/weixiu" target="_blank" class="menu-link px-2">设备维修</a> </li> </ul> <!--end::Menu--> </div> <!--end::Footer container--> </div> <!--end::Footer--> </div> <!--end:::Main--> </div> <!--end::Wrapper--> </div> <!--end::Page--> </div> <!--end::App--> <div id="kt_scrolltop" class="scrolltop" data-kt-scrolltop="true"> <!--begin::Svg Icon | path: icons/duotune/arrows/arr066.svg--> <span class="svg-icon"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect opacity="0.5" x="13" y="6" width="13" height="2" rx="1" transform="rotate(90 13 6)" fill="currentColor"></rect> <path d="M12.5657 8.56569L16.75 12.75C17.1642 13.1642 17.8358 13.1642 18.25 12.75C18.6642 12.3358 18.6642 11.6642 18.25 11.25L12.7071 5.70711C12.3166 5.31658 11.6834 5.31658 11.2929 5.70711L5.75 11.25C5.33579 11.6642 5.33579 12.3358 5.75 12.75C6.16421 13.1642 6.83579 13.1642 7.25 12.75L11.4343 8.56569C11.7467 8.25327 12.2533 8.25327 12.5657 8.56569Z" fill="currentColor"></path> </svg> </span> <!--end::Svg Icon--> </div> <!--begin::Javascript--> <script>var hostUrl = "/static/default/pc/";</script> <!--begin::Global Javascript Bundle(mandatory for all pages)--> <script src="/static/default/pc/plugins/global/plugins.bundle.js"></script> <script src="/static/default/pc/js/scripts.bundle.js"></script> <!--end::Global Javascript Bundle--> <!--end::Javascript--> </body> <!--end::Body--> </html>