1

私が取り組んでいるレガシーサイトがあり、特定のリンクがクリックされたときにロゴ画像を交換する必要があります。これはFirefoxとChromeの両方で機能しますが、IEでは機能しません。

問題をさらに複雑にするために、スクリプトを含むページは3つのフレームセット内にネストされています。リンクはスクリプトと同じフレームセットにありますが、ロゴは一番上のフレームにあります。

$('a.reset-logo').click(function() {
    var img = '../images/img1.gif';

    var $img = $('img.header-image', window.parent.top.frames[0].document);

    //testing
    //shows the correct src in chrome/firefox -- undefined in IE    
    //alert($img.attr('src'));

    $img.attr('src', img);
});

はい、フレームの使用を維持する必要があります。これは書き直しではなく、単なるメンテナンスの問題です。私はこれの壁に頭をぶつけてきました。

コンテキストをwindow.top.frames[0].documentに変更しようとしましたが、特に同じ結果になりました。問題はセレクター内にあり、それが何であるかを正確に特定できないようです。

4

2 に答える 2

0

http://jsfiddle.net/TJVuY/4/は役に立ちますか?window.parent.top.frames [0] .documentを削除しました。ドキュメント自体を参照しているため必要ありませんでしたが、IE8で機能するようになりました。

于 2012-08-17T16:56:43.797 に答える
0

スクリプトを次のように変更することで、動作させることができました。

<script type="text/javascript">
    $(document).ready(function () {
        $('a.reset-logo').click(function (e) {
            var theFrame = window.parent.top.frames[0].document;
            var theSrc = '../images/img1.jpg';

            $(theFrame).find('img.header-image').attr('src', theSrc);
        });
    });
</script>
于 2012-08-20T14:09:54.640 に答える