如何获得iframe内容宽度?

时间:2013-02-04 14:44:25

标签: javascript jquery iframe tinymce width

我的页面中有一个iframe。像这样:

<iframe width="600px">
    <html>
        <head>
        </head>
        <body>
            <p>Some text</p>
            <img src="/foo/bar/test.png" />
        </body>
    </html>
</iframe>

我希望能够检测iframe内容是否大于600px。我试过这个:

var iframe = $('iframe');
if (iframe.width() < iframe.contents().width()) {
    console.log('contents larger than the iframe');
}

适用于Firefox和Internet Explorer。但不是Chrome。在Chrome上,iframe.contents().width()为600。

我尝试了iframe.contents().find('body').width()但结果也是600。

如何在Chrome中检测iframe内容的实际宽度?

3 个答案:

答案 0 :(得分:0)

尝试在加载iframe后添加宽度检查,例如建议的here

它为我做了诀窍。

答案 1 :(得分:0)

我想你想得到一个tinymce iframe的iframe宽度。 您可以尝试使用此代码段。 还需要做的是将插入符号设置在右外侧位置。 我们的想法是测量插入位置。

var ed = tinymce.editors[0]; // or tinymce.get('your_editor_id')
var rng = ed.selection.getRng();
rng.collapse(true);

var bm = ed.selection.getBookmark();
var $marker = $(ed.getBody()).find('#'+bm.id);
var elem = ed.getDoc().getElementById(bm.id+'_start');

try {
    box = elem.getBoundingClientRect();
} 
    catch(e) 
{
    console.log('adjustIframePosition (irbasics) error creating box: ' + e);
}


var doc = ed.getDoc(),
    docElem = doc.documentElement,
    body = ed.getBody(),
    win = ed.getWin(),
    clientTop  = docElem.clientTop  || body.clientTop  || 0,
    clientLeft = docElem.clientLeft || body.clientLeft || 0,
    scrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,
    scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
    top  = box.top  + scrollTop  - clientTop,
    left = box.left + scrollLeft - clientLeft;

console.log('iframe width: ' + (box.left + scrollLeft) );

答案 2 :(得分:-1)

我不使用jQuery,但也许可以帮助这个:

var iframe = document.getElementById("myiframe");
var doc = iframe.contentDocument || iframe.contentWindow.document;

alert(doc.body.scrollWidth); // use this property for check