5

我的页面中有一个 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 内容的实际宽度?

4

3 回答 3

0

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

它对我有用。

于 2013-02-04T16:04:29.537 回答
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) );
于 2013-02-05T09:42:09.680 回答
-1

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

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

alert(doc.body.scrollWidth); // use this property for check
于 2013-02-04T18:04:03.680 回答