您的位置:首页 > Web前端 > JavaScript

js的一些问题(二)

2016-04-16 16:38 417 查看

Javascript获取非行间样式

Js中的html不能获取行间样式,怎么获取呢?在ie中可以使用currentstyle,在谷歌和火狐下我们可以用到ge’t’ComputedStyleStyle

委托事件是什么?

什么是委托事件:

通俗得将就是,事件是如onclick,onmouseover等。委托呢,就是让别人来做,这个时间本来是是加载某些元素上的,然而你却加到别人身上来做,完成这个事件。

也就是:利用冒泡原理,吧事件见到父级上,触发执行效果。

好处:

提高性能,新添加的元素还会有之前的事件

如何阻止事件冒泡和默认事件?

在使用javascript编程时会遇到一个问题,就是当你给html添加事件时,由于浏览器默认的为冒泡型事件触发机制,所以会触发你不想触发的事件。

canceBubblereturn false

1.阻止事件冒泡,使成为捕获型事件触发机制.
function stopBubble(e) {
//如果提供了事件对象,则这是一个非IE浏览器
if ( e && e.stopPropagation )
    //因此它支持W3C的stopPropagation()方法
    e.stopPropagation();
else
    //否则,我们需要使用IE的方式来取消事件冒泡
    window.event.cancelBubble = true;
}
2.当按键后,不希望按键继续传递给如HTML文本框对象时,可以取消返回值.即停止默认事件默认行为.
//阻止浏览器的默认行为
function stopDefault( e ) {
    //阻止默认浏览器动作(W3C)
    if ( e &&e.preventDefault )
        e.preventDefault();
    //IE中阻止函数器默认动作的方式
    else
        window.event.returnValue= false;
    return false;
}
javascript的本地对象,内置对象和宿主对象
本地对象为array objregexp等可以new实例化
内置对象为gload Math
等不可以实例化的
宿主为浏览器自带的document,window等
documentload 和document ready的区别

Document.onload 是在结构和样式加载完才执行js

Document.ready 是在文档结构以及加载完成(不包含图片等非文字媒体文件)原生种没有这个方法,jquery中有 $().ready(function)

Js的同源策略

在web页面的开发中我们经常会说起脚本的跨域访问的问题,这个问题的始作俑者就是javascript语言安全限制中的同源策略(same-origin policy )所造成的。
同源策略简单的说就是一段脚本只能读取来自于同一来源的窗口和文档的属性,这里的同一来源指的是主机名、协议和端口号的组合
部分跨域请求的方法,在后面会专门讲跨域请求。
1.某两个具有相同的一级域名的二级域(如se.360.cn和sd.360.cn)下的页面这间的互相访问
在javascript 1.1版本以后,给document对象引进了一个属性叫domain,通过将这个属性设置成指向同一个域名可以满足上面的需求
2.完全不同的两个域的访问,如www.360.cnwww.360safe.com的互相访问
这种情况通过javascript语言本身就无法解决了,需要借助<javascript>标签的特性和jsonp协议,在html文档里使用<javascript>标签时有个src属性,这个属性对于url的域名是没有任何限制的,jsonp全名json with padding。
一个简单的做法就是利回调函数:
3.假如你无法控制其中一个域的代码,怎么办?
 
这个时候就只能通过代理的方式来满足需求了,图示如下 http:// href="http://www.test.com/a.html" target=_blank>www.test.com/a.html   ---->  http://www.test.com/b.php  ---->  http://www.other.com/c.html
如果a.html想获得c.html的内容,它首先请求和他同域的b.php页面,b.php中通过服务端请求c.html,然后返回给a.html
Ie特例
在处理同源策略的问题上,IE存在两个主要的不同之处。

·        授信范围(Trust Zones):两个相互之间高度互信的域名,如公司域名(corporate domains),不遵守同源策略的限制。
·        端口:IE未将端口号加入到同源策略的组成部分之中,因此 http://company.com:81/index.html 和http://company.com/index.html
 属于同源并且不受任何限制

一个页面从输入 URL 到页面加载完的过程中都发生了什么事情?

浏览器会把这个请求提交到网络,网络更加url解析得到ip地址,然后根据ip访问对应的网络空间对于网页页面,然后读取页面文件反应到浏览器中,浏览器对页面代码以及各种js和css东西进行解析架构,加载网页代码,从第一行开始到最后一行,加载到结束,然后返回一个回应:加载结束,这样浏览器在底部会显示网页加载完毕。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: