JavaScript - The Definitive Guide Read Log 5

Chapter 11. Pattern Matching with Regular Expressions

创建正则表达式有两种方法:
1. var pattern = /s$/;
2. var pattern = new RegExp(“s$");
关于正则表达式的语法,这里不做多写。


JS的正则表达式还可以加上一些flag
------------------------------------------------------------------------
Character Meaning
i Perform case-insensitive matching.
g Find all matches rather than stopping after the first match.
m Multiline mode. 
------------------------------------------------------------------------


声明一个正则表达式后,最重要的是如何使用。JS对字符串提供了search, replace, match, split等方法,它们都支持正则表达式。另外,其实正则表达式自己也支持很多方法,比如test, exec等,比较像常规模式。

Part II: Client-Side JavaScript
Chapter 13. JavaScript in Web Browsers

Client-js中,Window object是全局Object。它定义了很多属性来控制浏览器和本身显示。不同Window之间的全局变量互不干扰。

The Role of JavaScript on the Web

1. 创建页面效果。
2. 表单排序
3. 内容显隐
4. 服务器通讯

Embedding Script in HTML

1. 插入JS
<script>
// Your JavaScript code goes here
</script>

<script>
<![CDATA[
// Your JavaScript code goes here
]]></script>
2. 外部链接
<script src="../../scripts/util.js"></script>
3. 直接写在标签里
<a herf="javascript:
if (alert("New windows?"))
void windows.open('www.g.cn');
else
window.herf = 'www.g.cn');
">Google</a>


上面的示例都没有指定文件类型,在真实环境下可能是需要的。

Event Handlers in HTML

Client-js是以事件模型为驱动的,所以event handler用处非常广泛。Event handler通常是html标签里的一个属性,下面是一些常见的Event handler:
onclick 处理所有button-like元素,它它返回false时,浏览器不执行任何默认操作。
mousedown, onmouseup 单独处理鼠标单击
onmouseover, onmouseout 区域移入/出
onchange <input>, <select>, <textarea>, 修改了文字且焦点移出文档框时触发
onload 适用于<body>, 文档加载结束,正在加载图片行资源


Executing scripts

当html解析器遇到脚本标记时,它会停下来,先执行完脚本,然后再继续。Script可以出现在<head>或<body>中,出现在<head>中的脚本可以定义一些变量供其它地方使用,或定义一些没有调用document.write()的函数,最常见的是为onload定义一个函数。

JavaScript Security

What JavaScript Can't Do
1. JS可以打开新窗口,但多数浏览器都禁用此功能。只有用户主动行为可能被允许。
2. 不能关闭别人的窗口。
3. JS不能改变链接指向的地址,通过mouseover之类的消息。
4. 不能创建一个太小或大于屏幕大小的窗口,同样也不能创建没有标题栏和状态条的窗口。
5. FileUpload控件的value不能设置。
6. 不能查看其它网站显示的内容。The Same-Origin Policy.
7. ... ...
js做了很多限制,目的主要为了自身的安全。


顺便普及一下XXS攻击(跨网站指令码),攻击的原因是未对用户发送的内容进行检测,导致其它用户看到此内容时结果被执行了内容。解决方法也非常简单,在服务端过滤(主要是<和>的转义)。

你可能感兴趣的:(JavaScript,正则表达式,浏览器,object,脚本,html解析器)