你的位置:首页 > 软件开发 > Java > document.domain跨子域

document.domain跨子域

发布时间:2015-06-24 00:00:08
document.domain用来得到当前网页的域名。比如在地址栏里输入:javascript:alert(document.domain); //www.315ta.com我们也可以给document.domain属性赋值,不过是有限制的,你只能赋成当前的域名或者基础域名。比如 ...

document.domain用来得到当前网页的域名。javascript:alert(document.domain); //www.315ta.com我们也可以给document.domain属性赋值,不过是有限制的,你只能赋成当前的域名或者基础域名。上面的赋值都是成功的,因为www.315ta.com是当前的域名,而315ta.com是基础域名。但是下面的赋值就会出来"参数无效"的错误:因为cctv.net与ttt.315tas.com不是当前的域名也不是当前域名的基础域名,所以会有错误出现。Javascript出于对安全性的考虑,而禁止两个或者多个不同域的页面进行互相操作。比如在:aaa.com的一个网页(a.html)里面利用iframe引入了一个bbb.com里的一个网页(b.html)。所以如果在a.html里引入aaa.com里的另一个网页,是不会有这个问题的,因为域相等。有另一种情况,两个子域名:aaa里的一个网页(a.html)引入了bbb 里的一个网页(b.html),这时我们就可以通过Javascript,将两个页面的domain改成一样的,document.domain = "xxx.com";

这样这两个页面就可以互相操作了。也就是实现了同一基础域名之间的"跨域"。

 

对于主域相同而子域不同的例子,可以通过设置document.domain的办法来解决。具体的做法是可以在http://www.a.com/a.html和http://script.a.com/b.html两个文件中分别加上document.domain = ‘a.com’;然后通过a.html文件中创建一个iframe,去控制iframe的contentDocument,这样两个js文件之间就可以“交互”了。当然这种办法只能解决主域相同而二级域名不同的情况,如果你异想天开的把script.a.com的domian设为alibaba.com那显然是会报错地!代码如下:

www.a.com上的a.html

document.domain = 'a.com';var ifr = document.createElement('iframe');ifr.src = 'http://script.a.com/b.html';ifr.style.display = 'none';document.body.appendChild(ifr);ifr.onload = function(){  var doc = ifr.contentDocument || ifr.contentWindow.document;  // 在这里操纵b.html  alert(doc.getElementsByTagName("h1")[0].childNodes[0].nodeValue);};

原标题:document.domain跨子域

关键词:dom

dom
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。