生命不息学习不止,前端js学习笔记(一)
引言
从毕业到年已经整整7年,期间一直从事.net开发做c/s从 c# 转到 wpf 而后又开始做b/s 用silverlight,从最开始的arcgis engine 到后来的silverlight api ,去年开始一直在涉及开源的GIS方面应用开发openlayers geoserver dotspatial等。c/s方面还可以用.net的一些开源库来搞,bs原本想凑合用sl混混,但是不会js实在是让我工作起来很难受。这次正好有个项目用涉及到的系统都是提供js接口,本屌丝连html页面标签都认不全,无比蛋疼之下只好下定决心。
javaScript 介绍
通用跨平台的脚本语言。
js主要由以下三部分组成
ECMAScript 核心
DOM 文档对象模型
BOM 浏览器对象模型
ECMAScript:
1997年 制定的 ECMA-262标准 中定义了ECMAScript
最新一版的标准时2009年的ECMA-262第5版 简称ECMAScript 5
从第一版到第五版 如果用C#的角度来解释就可以理解为C#1.0-5.0这种概念。
ECMAScript与web浏览器没有关系,Web浏览器只是ECMAScript实现可能的宿主环境之一,其他宿主比如Adobe Flash。
ECMAScript 主要规定了如下内容:语法、类型、语句、关键字、保留字、操作符、对象。
javaScript实现了ECMAScript,Adobe ActionScript也同样实现了ECMAScript。
到了2008年,五大主流web浏览器(IE,Firefox,Safari,Chrome,Opera)全部做到了与ECMA-262兼容。对于ecmascript5的兼容如下:
Opera 11.60+、
Internet Explorer 9+、Firefox 4+、Safari 5.1+、Chrome 13
文档对象模型(DOM)
文档对象模型是针对XML的,但经过扩展用于HTML的应用程序API。DOM把整个页面映射为一个多层节点结构。HTML或者XML页面中的每个组成部分都是这种类型的节点,这些节点又包含着不同类型的数据。
DOM并不是针对js的,很多语言都实现了DOM.
DOM Level1 于1998年10月成为W3C的推荐标准。
DOM1由两个模块组成:
DOM core
DOM HTML
其中DOM核心规定了如何映射基于XML的文档结构。DOM HTML模块则在DOM核心的基础上加以扩展,添加了针对HTML的对象和方法。
DOM2在DOM1的基础上增加了鼠标和用户界面事件、范围、遍历等。DOM3又进一步扩展了DOM。
浏览器对象模型(BOM)
BOM可以控制浏览器显示的页面以为的部分。但是BOM没有相关的标准这也导致了各种问题。HTML5致力于把很多BOM功能写入正式规范。人们习惯把所有针对浏览器的js扩展算作BOM的一部分,如:弹出新的浏览器窗口,移动、缩放关闭浏览器窗口,cookies支持,提供浏览器信息的navigator对象,提供浏览器加载页面信息的location对象,提供用户显示器分辨率的screen对象xmlhttprequest和activexobject这也的自定义对象。
由于没有BOM的标准,因此每个浏览器都有自己的实现。
JavaScript的版本
当前最新版本应该是2010年7月的1.82 对应的IE版本是9
在HTML中使用JavaScript
<script>元素
向HTML页面中插入js的主要方法就是使用<script>元素,相关属性:
async:可选。立即下载脚本,但不反感页面中的其他操作。只对外部脚本文件有效。
charset:可选。标识通过src属性制定的代码的字符集。
src:可选。表示包含要执行代码的外部文件。
type:可选默认值为text/javascript。为了兼容性一般使用text/javascript。
示例:
<script type=“text/javascript”>
function sayhi(){alert(“hi”);}
</script>
包含在<script>元素内部的js代码将被从上至下依次解释。然后将该定义保存在自己的环境当中。在解释器对<script>元素内部的所有代码解释完毕前,页面中的其余内容都不会被浏览器加载或显示。
在使用<script>嵌入js代码时要注意不能出现”</script>”字符串如下:
<script type=”text/javascript”>
function sayhi()
{
alert(“</script>”);这样就会报错
alert(“<\/scriot>”);这样才正确
}</script>
如果要通过<script>元素来包含外部js文件则需要指定src属性。src属性接收一个url。如果指定了src属性则<srcript>标签中不在解析包含的代码。只要不存在defer和async属性,浏览器都会按照<script>元素在页面中出现的先后属性对他们一次进行解析。
标签的位置
按照惯例,所有的<script>元素都应该放在页面的<head>元素中。但是这种做法导致要全部的js代码都下载解析完后,才会开始呈现页面内容(浏览器遇到<body>标签时才开始呈现内容)。这样对于很多js代码的页面来说,用户体验很不好,为了避免这个问题现代web英语程序一版会把全部jsavascript引用放在<body>元素中页面的内容后面。如:
<!DOCTYPE html>
<html>
<head>
<title>123<title>
</head>
<body>
<!--这里放内容—》
<script type=”text/javascript”src=”example1.js”></script>
</body>
</html>
</html>
在html4.01开始为<script>定义了defer属性
<srcipt type=”text/javascript” defer=”defer”src=”example1.js”></script>
这样就可以把js代码放到head中了
生命不息学习不止,前端js学习笔记(一)的更多相关文章
- [前端JS学习笔记]JavaScript function
一.函数的声明 1.1 function 命令 function methodName(params) { // code } 如下声明: function test_function(params) ...
- [前端JS学习笔记]JavaScript CallBack
一.概念介绍 CallBack : "回调" . 在spring优秀框架回调无处不在, 回调的运用场景很多, 如 swt事件监听.netty等.它的主要作用是提高程序执行效率, 一 ...
- [前端JS学习笔记]JavaScript prototype 对象
一.概念介绍 prototype 对象 : 原型对象.在JavaScript中, 每一个对象都继承了另一个对象,后者称为"原型对象". 只有 null 除外,它没有自己的原型对象. ...
- [前端JS学习笔记]JavaScript 数组
一.JavaScript数组的奇葩 大多数语言会要求数组的元素是同个类型, 但是JavaScript允许数组元素为多种类型. var arr = ["羽毛球", 666, {&qu ...
- 学习web前端技术的笔记,仅供自己查阅备忘,图片上传预览
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- 【学习】原生js学习笔记1:添加class和使input为不可用
<input type="checkbox" id="new_check" onChange="noUse()" checked> ...
- 学习web前端技术的笔记,仅供自己查阅备忘,移动对font-size的控制(并非原创)
假设根字体font-size的值是40px, 640/40=16,16就是px换算rem的值 function initHtmlFontSize(){ //获取可可视屏幕的宽度 var _width= ...
- 前端开发学习笔记 - 1. Node.JS安装笔记
Node.JS安装笔记 Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
随机推荐
- PHP打开错误提示和关闭错误提示的方法
找到php的配置文件,也就是php.ini 在文件中查找 ‘display_errors’ 查找到 display_errors = Off 或者 display_errors = On, Off ...
- DedeCMS实现自定义表单提交后发送指定QQ邮箱的方法
如月cruyue在做DedeCMS自定义表单发送邮箱的教程,发现大部分都是在php文件里写死固定字段内容,这样虽然也能实现自定义表单提交后发送指定邮箱,但是很不智能,如月cruyue想要一个我们自定义 ...
- odoo 的字段。orm对象
OpenERP ORM 对象方法列表 OpenERP对象支持的字段类型有,基础类型:char, text, boolean, integer, float, date, time, datetim ...
- springboot利用fastjson序列化输出(默认是jackson)
在@SpringBootApplication类中添加 @Bean public HttpMessageConverters fastJsonHttpMessageConverters() { //创 ...
- Html checkbox全选
html中全选 <table class="data-table td-center"> <tr> <td><input type=&qu ...
- BAE+Python+Django+Wechatpy+Baidu weather api +微信订阅号 = 实现微信查询天气
最近想在微信上面实现天气查询,分两个步骤: 1.被动回复:输入天气.xx天气获取天气情况 2.主动推送:每天定时推送天气(针对24小时内产生交互的人) 目前已经实现第一个步骤,如下: 现将实现此功能环 ...
- Google推荐的图片加载库Glide
英文原文 Introduction to Glide, Image Loader Library for Android, recommended by Google 首发地址 http://jco ...
- goLang冒泡
// test project main.gopackage main import ( "fmt") func main() { var a = [10]int{1, ...
- unity对敏感词库处理的记录
string txt = Resources.Load<TextAsset>("minganci").ToString(); //string txt = " ...
- C++的引用本质上等同于C的指针
本文给出一个很小的例子,通过反汇编后观察认为,C++的引用本质上等同于C的指针. o foo1.cpp v.s. foo2.cpp o 对foo1.cpp 和foo2.cpp进行编译 $ g++ -g ...