自动调整使用document.write创建的iFrame

时间:2014-08-23 21:30:35

标签: javascript ruby-on-rails iframe

所以,我有一个Javascript文件:

function resize(id) {
    var newheight;
    var newwidth;
    id = id.trim();

    if (document.getElementById) { 
        newheight=document.getElementById(id).contentWindow.document .body.scrollHeight;
        newwidth=document.getElementById(id).contentWindow.document .body.scrollWidth;
    }

    document.getElementById(id).height= (newheight) + 'px';
    document.getElementById(id).width= (newwidth) + 'px';
}

document.write("<iframe frameborder='0' id='vote-frame' scrolling='no'></iframe>")
$("#vote-frame").attr("src", "<%= server_embed_url(@server) %>");
$("#vote-frame").load(function(){ 
    resize("vote-frame")
})

这应该将iFrame写入页面,并根据iFrame中内容的宽度/高度调整大小,但由于某些原因无法正常工作。

我在我的页面上显示脚本:

%script{src: server_display_url(@server, format: :js)}

这是Rails'.js.erb的限制,还是不可能,因为iFrame是由document.write动态创建的?

我应该提一下,当我将iFrame直接放入HAML视图时,这一切都运行正常,并且调整大小很好。

编辑:我还尝试了iFrame标签中常用的onload属性:

function resize() {
    var id = "vote-frame"
    var newheight;
    var newwidth;

    if (document.getElementById) { 
        newheight=document.getElementById(id).contentWindow.document .body.scrollHeight;
        newwidth=document.getElementById(id).contentWindow.document .body.scrollWidth;
    }

    document.getElementById(id).height= (newheight) + 'px';
    document.getElementById(id).width= (newwidth) + 'px';
}
document.write("<iframe frameborder='0' onload='resize()' src='<%= server_embed_url(@server) %>' id='vote-frame' scrolling='no'></iframe>")

由于某种原因,它仍然没有调整大小......

0 个答案:

没有答案