私が取り組んでいるレガシーサイトがあり、特定のリンクがクリックされたときにロゴ画像を交換する必要があります。これは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に変更しようとしましたが、特に同じ結果になりました。問題はセレクター内にあり、それが何であるかを正確に特定できないようです。