0

这个问题特别适用于所有支持特征检测而不是浏览器检测的人。

我以前使用浏览器检测来更改 iframe 的大小,该 iframe 会在 Firefox 和 ie 中切断部分嵌入页面,但现在它不适用于 ie 11。

我有一个来自不同域的页面显示为 i-frame。外部页面上唯一的内容是格式化的文本。我根据 chrome 中的内容设置 iframe 的高度,以使所有文本都被完美地框起来。Safari 和 Opera 使用 Chrome 设置,但 Firefox 和 IE 显示的 iframed 页面大于 chrome 导致部分文本被截断。如果检测到 Firefox 或 IE,我使用更改高度的函数解决了这个问题:

function changeHeight(divName) {
    var userAgent = navigator.userAgent.toLowerCase();
    var is_IE = userAgent.indexOf('msie') > -1;
    var is_firefox = userAgent.indexOf('firefox') > -1;

    if (is_IE) {
        document.getElementById('storyP').style.height = '67447px';
    }

    if (is_firefox) {
        document.getElementById('storyP').style.height = '67375px';
    }
}

这工作正常,直到 IE 更改其用户代理字符串。

所以我决定倾听所有说不要检测浏览器、检测功能的人。

问题:什么功能?

如果可能的话,我完全不知道如何使用特征检测来解决这个问题。

4

1 回答 1

0

您需要让您的 javascript 检查 iframe 内部的.scrollHeight属性document,然后将 iframe 的高度设置为该值。

这样,iframe 的大小将与其内容的大小相匹配,即使远程页面在未来某个时间发生更改。

于 2013-12-23T06:56:51.670 回答