7

我有这个 jjavascript 来调整 iframe 的大小:

 $(function () {

            var iFrames = $('iframe');

            function iResize() {

                for (var i = 0, j = iFrames.length; i < j; i++) {
                    iFrames[i].style.height = iFrames[i].contentWindow.document.body.offsetHeight + 'px';
                }
            }

            if ($.browser.safari || $.browser.opera) {

                iFrames.load(function () {
                    setTimeout(iResize, 0);
                });

                for (var i = 0, j = iFrames.length; i < j; i++) {
                    var iSource = iFrames[i].src;
                    iFrames[i].src = '';
                    iFrames[i].src = iSource;
                }

            } else {
                iFrames.load(function () {
                    this.style.height = this.contentWindow.document.body.offsetHeight + 'px';
                });
            }

        });

在 chrome 中,这里有问题:

 if ($.browser.safari || $.browser.opera) {

我收到这个错误有什么原因吗?我正在使用最新的 JQuery?

谢谢

4

4 回答 4

14

您可能正在使用 jQuery 1.9 或更高版本,在这种情况下$.browser,自 1.3 起已被弃用后被正式删除。

您可以使用jQuery migrate来修补它,但最好使用特定于功能的方法而不是特定于浏览器的方法。Modernizr非常适合这一点。

于 2013-02-21T20:40:41.307 回答
3

jquery 建议不要$.browser...$.support改用 ...

如果$.browser.safari(或歌剧或您尝试访问的任何内容)不存在,则会引发错误。检查它是否undefined

于 2013-02-21T20:41:57.737 回答
2

我今天注意到一个客户在没有告诉我的情况下升级了这个问题。

我发布的快速修复(不使用 Modernizr 这可能是更好的方法)

在 scrollTo.js 文件中,转到第 85 行并将其设为:

        var is_safari = navigator.userAgent.indexOf("Safari") > -1;

        return is_safari || doc.compatMode == 'BackCompat' ?
于 2014-04-10T22:15:45.037 回答
0

您可以尝试检查 userAgent 字符串:

Chrome 在 userAgent 字符串中同时具有“Chrome”和“Safari”。Safari 只有“Safari”。

使用 jQuery 检测 Safari

于 2013-02-21T20:43:47.320 回答