- 浏览: 90403 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
zhaohaolin:
哟,龙哥,你还搞C,好高大上的东西啊
xcode初探 -
robinqu:
又改了一些小错误~
[更新20100922]jQuery Location Select 插件- 地址联动、地理检测 -
robinqu:
kimm 写道这个功能不错,就是应用有点局限,内网就不好用了。 ...
[更新20100922]jQuery Location Select 插件- 地址联动、地理检测 -
robinqu:
更新了⋯⋯把代码重写了一次⋯⋯大家可以实现任何种类的联动,以及 ...
[更新20100922]jQuery Location Select 插件- 地址联动、地理检测 -
robinqu:
truth315 写道不好意思了,compu指的是getAre ...
JavaScript Prototype基础
The Window as Global Execution Context
窗口作为全局执行环境
document属性引用Document对象
location属性引用与该window相关的Location对象
frames[]数组保存了文档中表单元素的引用
The Client-Side Object Hierarchy and the DOM
DOM文档树
The Role of JavaScript on the Web
JS在浏览器中的角色
为内容和表现进一步添加行为
Unobtrusive JavaScript
不唐突的JS
As its name implies, this paradigm holds that JavaScript should not draw attention to itself; it should not obtrude.
The first goal of unobtrusive JavaScript is to keep JavaScript code separate from HTML markup. As a corollary to this goal, you should strive to make your external files of JavaScript code as modular as possible.
The second goal of unobtrusive JavaScript is that it must degrade gracefully.
A third goal of unobtrusive JavaScript is that it must not degrade the accessibility of an HTML page (and ideally it should enhance accessibility).
尽量不凸显JS的存在
首先,与HTML代码分离
其次,平稳退化
再次,增强可用性;也就是稳步增强
Embedding Scripts in HTML
在HTML中嵌入代码
<script>标签之间
<scirpt>引入的单独JS文件
HTML的事件属性中的代码
javascirpt伪协议所引用的代码
注意CDATA标记
The defer Attribute
defer属性
改变<script>代码块的执行顺序
可以延迟该块的执行,继续HTML解析
Event Handlers in HTML
事件句柄
onclick
This handler is supported by all button-like form elements, as well as <a> and <area> tags.
onmousedown, onmouseup
These two event handlers are a lot like onclick, but they are triggered separately when the user presses and releases a mouse button, respectively. Most document elements support these handlers.
onmouseover, onmouseout
onchange
This event handler is supported by the <input>, <select>, and <textarea> elements. It is triggered when the user changes the value displayed by the element and then tabs or otherwise moves focus out of the element.
onload
This event handler may appear on the <body> tag and is triggered when the document and its external content (such as images) are fully loaded.
在执行js伪协议的语句是,确保返回值为空,否则会刷新当前页面来显示
The onload Event Handler
onload事件句柄
这个是在文档完全解析完并且所有资源都下载后执行的,这里不再允许执行document.write()。很显然这里文档已经渲染完毕,如果再有document.write(),那么浏览器就会新建一个空白文档来写入内容。用户就没有机会看到之前文档的内容了。
Client-Side Compatibility
客户端兼容性
目前保证兼容性最好的方法不是判断浏览器再为他们编写各自的代码,而是进行功能性判断。
Feature Testing
功能测试
Feature testing (sometimes called capability testing) is a powerful technique for coping with incompatibilities.
简单来说也就是判断某一个函数或方法在特定的环境下是否存在,并根据结果进行对应操作。而不是盲目地根据不可靠的方法判断浏览器种类和版本。
例如下面对事件模型的判断:
还有一种方法就是尝试所有可能的函数,直到有一种得出了正确的结果;往往这个是由于不同浏览器实现同一种操作的函数名称不一样。
例如下面这个新建XHR对象的例子:
JavaScript Security
JS的安全策略
JS可以打开浏览器窗口,但是大多数浏览器都会限制这个功能。由于广告代码的干扰,浏览器通常只让用户点击行为中的打开窗口代码生效。
JS也不允许未经用户允许关闭浏览器窗口。
JS也不允许在鼠标滑过链接的时候通过改变状态栏的提示文字来混淆浏览者。大多数浏览器都禁止更改状态栏文本了。
JS也不允许把窗口调节至某一个边长小于100像素。
FileUpload组件的value值不能够被更改。
对于不同服务器上的页面,脚本既不能读取其内容,也不能注册事件。
The Same-Origin Policy
同源策略
这个可以看做是上面最后一条的详细解释。
尽管脚本会限制不同服务器的文档,但是现在的大型站点往往有许多子域名。在JS的安全特性限制下,这些子域名下的脚本也是无法通讯的。好在有一个document.domain属性。
将需要互相通讯的文档的document.domain设置为同一个顶级域名就可以突破这个限制。
例如:
img.aaa.com的页面中document.domain设置为aaa.com;
serach.aaa.com的页面中document.domain同样设置为aaa.com;
窗口作为全局执行环境
引用
document property for the Document object
two self-referential properties, window and self
a location property that refers to the Location object associated with the window. When a web browser displays a framed document
the frames[] array of the top-level Window object contains references to the Window objects that represent the frames
The Window object represents a web browser window (or a frame within a window; in client-side JavaScript, top-level windows and frames are essentially equivalent).
two self-referential properties, window and self
a location property that refers to the Location object associated with the window. When a web browser displays a framed document
the frames[] array of the top-level Window object contains references to the Window objects that represent the frames
The Window object represents a web browser window (or a frame within a window; in client-side JavaScript, top-level windows and frames are essentially equivalent).
document属性引用Document对象
location属性引用与该window相关的Location对象
frames[]数组保存了文档中表单元素的引用
The Client-Side Object Hierarchy and the DOM
DOM文档树
The Role of JavaScript on the Web
JS在浏览器中的角色
引用
Web browsers display HTML-structured text styled with CSS stylesheets. HTML defines the content, and CSS supplies the presentation. Properly used, JavaScript adds behavior to the content and its presentation. The user's experience should not be dependent on JavaScript, but JavaScript can serve to facilitate that experience.
为内容和表现进一步添加行为
Unobtrusive JavaScript
不唐突的JS
引用
As its name implies, this paradigm holds that JavaScript should not draw attention to itself; it should not obtrude.
The first goal of unobtrusive JavaScript is to keep JavaScript code separate from HTML markup. As a corollary to this goal, you should strive to make your external files of JavaScript code as modular as possible.
The second goal of unobtrusive JavaScript is that it must degrade gracefully.
A third goal of unobtrusive JavaScript is that it must not degrade the accessibility of an HTML page (and ideally it should enhance accessibility).
尽量不凸显JS的存在
首先,与HTML代码分离
其次,平稳退化
再次,增强可用性;也就是稳步增强
Embedding Scripts in HTML
在HTML中嵌入代码
引用
Between a pair of <script> and </script> tags
From an external file specified by the src attribute of a <script> tag
In an event handler, specified as the value of an HTML attribute such as onclick or onmouseover
In a URL that uses the special javascript: protocol
From an external file specified by the src attribute of a <script> tag
In an event handler, specified as the value of an HTML attribute such as onclick or onmouseover
In a URL that uses the special javascript: protocol
<script>标签之间
<scirpt>引入的单独JS文件
HTML的事件属性中的代码
javascirpt伪协议所引用的代码
注意CDATA标记
<script><![CDATA[// Your JavaScript code goes here ]]></script>
The defer Attribute
defer属性
引用
As mentioned earlier, a script may call the document.write( ) method to dynamically add content to a document. Because of this, when the HTML parser encounters a script, it must normally stop parsing the document and wait for the script to execute.
改变<script>代码块的执行顺序
可以延迟该块的执行,继续HTML解析
Event Handlers in HTML
事件句柄
引用
onclick
This handler is supported by all button-like form elements, as well as <a> and <area> tags.
onmousedown, onmouseup
These two event handlers are a lot like onclick, but they are triggered separately when the user presses and releases a mouse button, respectively. Most document elements support these handlers.
onmouseover, onmouseout
onchange
This event handler is supported by the <input>, <select>, and <textarea> elements. It is triggered when the user changes the value displayed by the element and then tabs or otherwise moves focus out of the element.
onload
This event handler may appear on the <body> tag and is triggered when the document and its external content (such as images) are fully loaded.
在执行js伪协议的语句是,确保返回值为空,否则会刷新当前页面来显示
The onload Event Handler
onload事件句柄
这个是在文档完全解析完并且所有资源都下载后执行的,这里不再允许执行document.write()。很显然这里文档已经渲染完毕,如果再有document.write(),那么浏览器就会新建一个空白文档来写入内容。用户就没有机会看到之前文档的内容了。
Client-Side Compatibility
客户端兼容性
目前保证兼容性最好的方法不是判断浏览器再为他们编写各自的代码,而是进行功能性判断。
Feature Testing
功能测试
引用
Feature testing (sometimes called capability testing) is a powerful technique for coping with incompatibilities.
简单来说也就是判断某一个函数或方法在特定的环境下是否存在,并根据结果进行对应操作。而不是盲目地根据不可靠的方法判断浏览器种类和版本。
例如下面对事件模型的判断:
if (element.addEventListener) { // Test for this W3C method before using it element.addEventListener("keydown", handler, false); element.addEventListener("keypress", handler, false); } else if (element.attachEvent) { // Test for this IE method before using it element.attachEvent("onkeydown", handler); element.attachEvent("onkeypress", handler); } else { // Otherwise, fall back on a universally supported technique element.onkeydown = element.onkeypress = handler; }
还有一种方法就是尝试所有可能的函数,直到有一种得出了正确的结果;往往这个是由于不同浏览器实现同一种操作的函数名称不一样。
例如下面这个新建XHR对象的例子:
// This is a list of XMLHttpRequest creation functions to try HTTP._factories = [ function( ) { return new XMLHttpRequest( ); }, function( ) { return new ActiveXObject("Msxml2.XMLHTTP"); }, function( ) { return new ActiveXObject("Microsoft.XMLHTTP"); } ]; // When we find a factory that works, store it here HTTP._factory = null; // Create and return a new XMLHttpRequest object. // // The first time we're called, try the list of factory functions until // we find one that returns a nonnull value and does not throw an // exception. Once we find a working factory, remember it for later use. HTTP.newRequest = function( ) { /* fuction body omitted */ }
JavaScript Security
JS的安全策略
引用
A JavaScript program can open new browser windows, but, to prevent pop-up abuse by advertisers, many browsers restrict this feature so that it can happen only in response to a user-initiated event such as a mouse click.
A JavaScript program can close browser windows that it opened itself, but it is not allowed to close other windows without user confirmation. This prevents malicious scripts from calling self.close( ) to close the user's browsing window, thereby causing the program to exit.
A JavaScript program cannot obscure the destination of a link by setting the status line text when the mouse moves over the link.
A script cannot open a window that is too small (typically smaller than 100 pixels on a side) or shrink a window too small.
The value property of HTML FileUpload elements cannot be set.
A script cannot read the content of documents loaded from different servers than the document that contains the script. Similarly, a script cannot register event listeners on documents from different servers.
A JavaScript program can close browser windows that it opened itself, but it is not allowed to close other windows without user confirmation. This prevents malicious scripts from calling self.close( ) to close the user's browsing window, thereby causing the program to exit.
A JavaScript program cannot obscure the destination of a link by setting the status line text when the mouse moves over the link.
A script cannot open a window that is too small (typically smaller than 100 pixels on a side) or shrink a window too small.
The value property of HTML FileUpload elements cannot be set.
A script cannot read the content of documents loaded from different servers than the document that contains the script. Similarly, a script cannot register event listeners on documents from different servers.
JS可以打开浏览器窗口,但是大多数浏览器都会限制这个功能。由于广告代码的干扰,浏览器通常只让用户点击行为中的打开窗口代码生效。
JS也不允许未经用户允许关闭浏览器窗口。
JS也不允许在鼠标滑过链接的时候通过改变状态栏的提示文字来混淆浏览者。大多数浏览器都禁止更改状态栏文本了。
JS也不允许把窗口调节至某一个边长小于100像素。
FileUpload组件的value值不能够被更改。
对于不同服务器上的页面,脚本既不能读取其内容,也不能注册事件。
The Same-Origin Policy
同源策略
引用
Specifically, a script can read only the properties of windows and documents that have the same origin as the document that contains the script
To support large web sites of this sort, you can use the domain property of the Document object. By default, the domain property contains the hostname of the server from which the document was loaded. You can set this property, but only to a string that is a valid domain suffix of itself.
To support large web sites of this sort, you can use the domain property of the Document object. By default, the domain property contains the hostname of the server from which the document was loaded. You can set this property, but only to a string that is a valid domain suffix of itself.
这个可以看做是上面最后一条的详细解释。
尽管脚本会限制不同服务器的文档,但是现在的大型站点往往有许多子域名。在JS的安全特性限制下,这些子域名下的脚本也是无法通讯的。好在有一个document.domain属性。
将需要互相通讯的文档的document.domain设置为同一个顶级域名就可以突破这个限制。
例如:
img.aaa.com的页面中document.domain设置为aaa.com;
serach.aaa.com的页面中document.domain同样设置为aaa.com;
发表评论
-
WebApp在移动端的涅盘- 另类的移动端应用程序开发
2010-09-27 22:35 4517同时欢迎到我的BLOG讨 ... -
ScriptDoc的Notation规则
2010-01-23 19:37 1789这个还是蛮重要的,以前就一直很羡慕Java有一套标准来着: 转 ... -
关于google.setOnLoadCallback()的一点研究
2010-01-12 10:01 6154google.setOnLoadCallback()是goog ... -
ECMA 推出 JavaScript 5
2009-12-28 21:17 1648转发自http://www.comsharp.co ... -
Javascript 事件编程 (二)
2009-09-18 21:28 1641Event Handlers and the this Key ... -
Javascript 事件编程 (一)
2009-09-04 15:27 1272Events and Event Handling 事件和事件 ... -
Javascript CSS编程 (一)元素定位、透明、内联样式
2009-09-03 14:29 2083Querying Element Position and S ... -
Javascript CSS编程 (二)Computed Styles、Class修改、操作样式表
2009-09-03 13:15 5376Scripting Computed Styles 计算样式 ... -
Javascript DHTML动画
2009-09-03 13:00 1241JS实现的动画效果多半 ... -
Javascript IE4 DOM
2009-09-02 17:14 1029很多IE独有的DOM特性是沿袭自IE4的,所以有必要看看IE4 ... -
Javascript 操控选择文本
2009-09-02 17:02 1280Querying Selected Text 查询选择的文本 ... -
Javascript 寻找文档元素
2009-09-02 16:51 2336Finding Elements in a Document ... -
Javascript 窗口的几何关系和相关方法、属性
2009-09-02 10:47 1142Window Geometry 窗口几何关系 引用Scree ... -
JavaScript window下面的常用函数、属性
2009-09-02 10:30 1217我们常用的一些函数都是全局对象window下面的。这里将其梳理 ... -
JavaScript Namespace模拟
2009-07-15 18:53 1576做JavaScript的大型项目比较痛苦,它没有namespa ... -
JavaScript Class模拟深入 - Duck Typing 和 Class相关的工具类
2009-07-15 17:16 1797Duck Typing 引用If it implements ... -
JavaScript 判定对象类型
2009-07-15 16:53 1386判定JS的对象类型基本 ... -
JavaScript Class模拟深入 - 继承、子类
2009-07-15 16:27 1735Superclasses and Subclasses ... -
javascript this 关键字小提示
2009-07-14 22:01 1194来自:http://www.macji.com/2009/01 ... -
JavaScript Class模拟基础
2009-07-14 16:39 1149Simulating Classes in JavaScrip ...
相关推荐
在JavaScript的世界里,获取本地资源通常受到浏览器安全策略的限制,特别是涉及到文件系统直接访问时。针对"JavaScript Chrome浏览器获取本地图片的属性"这一主题,我们来深入探讨如何在Chrome浏览器中有效地处理...
deThread 库旨在将这一概念引入浏览器环境,使用户能在不离开浏览器的情况下利用多核处理器的优势。 **2. JavaScript 与 Web Workers** JavaScript 通常是单线程的,这意味着同一时间只能执行一个任务,这限制了其...
这种攻击使得攻击者能够在受害者的浏览器中执行恶意脚本,从而窃取敏感数据、冒充受害者身份进行操作或者对受害者实施其他形式的安全威胁。 #### 重要概念解析 1. **XSS攻击类型**: - **存储型XSS**:攻击代码被...
然而,由于浏览器的安全限制,JavaScript在浏览器环境中是不能直接执行本地的EXE(可执行)程序的。这是因为允许这样的操作会带来严重的安全风险,比如恶意代码的执行。但是,通过一些变通方法,如Node.js环境或者...
总的来说,尽管 JavaScript 的执行顺序在现代浏览器中通常是可预测的,但在进行跨浏览器兼容性测试时,开发者仍需要仔细检查代码的执行情况,确保不同浏览器环境下功能的正确性和稳定性。在处理动态引入脚本的场景时...
在生产环境中,考虑使用更安全的执行策略,如`vm`模块或编译模板字符串。 8. **标签“JavaScript开发-其它杂项”**:这个标签可能表明讨论的内容不仅仅是Electron特定的,还可能涉及到JavaScript开发中的其他通用...
18. JavaScript中的XML(Chapter 18: XML in JavaScript):分析了在JavaScript中处理XML的方法,包括DOM解析器的使用等。 19. ECMAScript for XML(Chapter 19: ECMAScript for XML):可能描述了E4X规范在...
xbro-messaging 提供了一种安全的机制,确保了两个脚本间的通信不会泄露敏感信息,同时也遵循了浏览器的安全策略。 2. **异步支持**:在Web开发中,异步处理是非常重要的,尤其是在处理大量数据或执行耗时操作时。...
2 浏览器中常见的安全概念 13 2.1 URL 13 2.1.1 URL的标准形式 15 2.1.2 IRI 16 2.1.3 URL的“可视化”问题——字形欺骗钓鱼攻击 18 2.1.4 国际化域名字形欺骗攻击 19 2.1.5 自纠错与Unicode字符分解映射 20 ...
在JavaScript的世界里,"经允许的javascript脚本"通常指的是那些在浏览器或服务器环境中被安全地执行,并且符合规定的代码。这些脚本是网站功能、交互性和动态内容的关键驱动力,但同时也需要遵循一系列的安全规范以...
6. **安全与隐私**:QtWebEngine提供了一些设置来管理安全策略,如禁用特定的Web特性,防止跨站脚本攻击等。 7. **性能优化**:根据应用需求,可能需要配置`QWebEngineSettings`以优化性能,例如禁用图片加载、调整...
3. **多平台支持**:浏览器需要在 Windows、MacOS、Linux、Android 和 iOS 等多种操作系统上运行,因此开发过程中需要考虑跨平台兼容性问题。 4. **安全性**:浏览器安全是至关重要的,包括防止跨站脚本攻击(XSS)...
在描述中提到的"parent 问题"可能指的是JavaScript中的跨域问题,因为Google浏览器对于同源策略执行得较为严格。同源策略是浏览器安全机制的一部分,阻止了不同源的页面之间共享数据,例如,当一个iframe尝试访问其...
5. JavaScript执行环境:现代网页通常包含JavaScript代码,因此Java编写的浏览器需要一个JavaScript引擎来执行这些脚本。开源项目如Rhino或Nashorn(在Java 8中引入)提供了这样的功能。开发者需要理解JavaScript的...
8. **跨域通信与安全**:CORS(跨源资源共享)和JSONP等机制用于解决JavaScript的同源策略限制,同时,了解XSS(跨站脚本攻击)和CSRF(跨站请求伪造)等安全问题的防范方法也是必要的。 9. **移动与响应式开发**:...
**内容安全策略(Content Security Policy, CSP)**是现代Web应用程序中一种重要的安全特性,用于防御跨站脚本(XSS)攻击和其他恶意代码注入。它允许网站管理员通过定义一个策略来控制页面可以加载哪些资源,如脚本...
虽然JavaScript在浏览器环境中对本地文件的操作受到严格限制,但在Node.js环境下,可以使用fs模块读写文件,这时就需要相应的权限控制来确保安全。 9. **SQL数据库交互**: 压缩包中的"xyw.sql"可能代表一个SQL...
Ajaxslt是一种JavaScript库,专门设计用于在客户端浏览器环境中执行XML到XML的转换,即XSLT(可扩展样式表语言转换)。在许多情况下,特别是那些涉及动态数据交互和页面局部刷新的应用中,Ajaxslt扮演着关键角色。它...
【JavaScript开发-其它杂项】中的“fishball自动抢鱼丸脚本”是一个利用JavaScript编写的自动化工具,主要用于在线互动活动中自动参与抢鱼丸(或类似虚拟物品)的活动。在互联网直播、线上游戏或者社交媒体平台中,...