7

iframeのサイズを変更するには、このjjavascriptがあります:

 $(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';
                });
            }

        });

クロムでは、ここで問題があります:

 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(またはoperaまたはアクセスしようとしているもの)が存在しない場合、エラーがスローされます。そのかどうかを確認します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 に答える