关于contentWindow和contentDocument

   用iframe嵌套页面是,如果父页面要获取子页面里面的内容,可以使用contentWindow或者contentDocument,其区别如下:

a>contentWindow  这是个只读属性,返回指定的iframe的窗口对象。它虽然不是标准的一部分,但各个主流浏览器都支持。

b>contentDocument  Firefox 支持,IE6,IE7都不支持,IE8开始支持,需要如此访问 document.frames['J_mainframe'].document。

兼容获取document对象:

var getIFrameDoc = function(){
    var iobj = document.createElement("iframe");
    document.getElementsByTagName("body")[0].appendChild(iobj);
    return iobj.contentDocument || iobj.contentWindow.document;
}

基本使用:

1)document.getElementById("myiframe").contentWindow 得到iframe对象后,就可以通过contentWindow得到iframe包含页面的window对象,然后就可以正常访问页面元素了;

2)$("#myiframe")[0].contentWindow jquery选择器获得iframe,先把jquery对象转换为DOM对象,或者使用get()方法转换;

3)$("#myiframe")[0].contentWindow.$("#dd").val() 可以在得到iframe的window对象后接着使用jquery选择器进行页面操作;

4)$("#myiframe")[0].contentWindow.username="zhangsan"; 可以通过这种方式向iframe页面传递参数,在iframe页面window.username就可以获取到值,username是自定义的全局变量;

5)在iframe页面通过parent可以获得主页面的window,接着就可以正常访问父亲页面的元素了;

7)parent.$("#frame_A")[0].contentWindow.document.getElmentById("#frame_B"); 同级iframe页面之间调用,需要先得到父亲的window,然后调用同级的iframe得到window进行操作;

-------------------------------------------------------------------

在子级iframe设置 父级 iframe ,或 孙级 iframe 高度。
function showIframeH(){
    
var parentWin = parent.document.getElementById("test");
    
if(!parentWin) return false;
    
    
var sub = parentWin.contentWindow.document.getElementById("test2");
    
if(!sub) return false;
    
    
var thirdHeight = sub.contentWindow.document.body.offsetHeight; //第三层 body 对象
    
    sub.height 
= thirdHeight; //设置第二层 iframe 的高度
    
    
var secondHeight = x.contentWindow.document.body.offsetHeight; //第二层 body 对象
    x.height = secondHeight; //设置第一层 iframe 的高度
    //alert(secondHeight);
    //alert('body: ' + x.contentDocument.body.offsetHeight + ' div:' + thirdHeight);
}

发布了3 篇原创文章 · 获赞 4 · 访问量 2258
展开阅读全文

IE打开页面出现script报错,拒绝访问文件

03-01

``` SCRIPT:拒绝访问 文件: jiathis_utility.html,行: 1,列: 1 SCRIPT:拒绝访问 文件: index.php,行: 1,列: 1 第一次IE打开会出现这两个错误,再次刷次页面就没了,也不影响功能,不知道是不是跨域问题??想知道具体原因,如何解决? 调试程序里显示以下内容: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>JiaThis Utility Frame</title> </head> <body style="background-color:transparent"> <script type="text/javascript"> /* (c) 2011 JiaThis Inc. 0222*/ /* <![CDATA[ */ eval(function(p,a,c,k,e,r){e=function(c){return c.toString(a)};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(5(){2 6=7,g=!!7.8,9=5(a){2 b=j.l;2 c=b.e(a+"=");4(c!=-1){c+=a.f+1;2 d=b.e(";",c);4(d==-1){d=b.f}h m(b.n(c,d))}h""};2 c=9(\'o\'),3="",s="";4(c){2 a=c.i(",");p(2 k q a){2 d=a[k].i(":");3+=s+d[0];s=","}}3=3?3:"r";g&&6.t.8(3,"*")})();',30,30,'||var|v|if|function|w|window|postMessage|jcookie|||||indexOf|length||return|split|document||cookie|unescape|substring|jiathis_sers|for|in|FALSE||parent'.split('|'),0,{})) /* ]]> */ </script> </body> </html> index.php的内容太多,被限制字数 我把以下代码注释掉, jiathis_utility.html 拒绝访问的错误就没了,但是微博,腾通讯的分享按钮也没了 +'<dl class="sqex-footer-shares" style="position:relative;"><dt style=" position:absolute; top:20px; left:50%; margin-left:-140px;"><div class="jiathis_style_32x32"><a class="jiathis_button_qzone"></a><a class="jiathis_button_tsina"></a>' + '<a class="jiathis_button_tqq"></a>' + '<a class="jiathis_button_weixin"></a><a class="jiathis_button_renren"></a><a href="http://www.jiathis.com/share" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank"></a><!--<a class="jiathis_counter_style"></a>--></div></dt></dl><script type="text/javascript" src="http://v3.jiathis.com/code/jia.js" charset="utf-8"></script>' ``` 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览