連続したリロード時にIE8およびIE9ブラウザーでonloadメソッド(以下のコードを参照)がそれ自体を複数回呼び出す理由がわかりません。
おそらく、onloadメソッドが複数回起動されるため、 IE8、IE9render(appear)
でこのイメージが複数回発生します。以下のjsコードは私のシニアフロントエンダーによって書かれています(彼はすべての、、 ...メソッドに彼自身の書かれたjsライブラリを使用しています)。コードはFirefox、Chromeで期待どおりに機能していますが、IE8またはIE9ブラウザでリロードしているときに複数回レンダリングされています。.append()
anim()
image(html code)
いくつかのクイック情報:
waitingFor()
-domを定期的にスキャンして、一致する要素を探します。mdiTog
-複数回表示されている画像。
使い方:
div
属性Class="suggestions contextSuggesions"
はbody
要素に挿入され、不透明度と画像をクリックした場合()を切り替える順序なしリスト(、、)が含まれul
ます。li
ul
0
1
mdiTog
以下は、Mditog
複数回出現する画像であり、その出現はランダムです。
waitingFor('.viewport .homePage', function () {
var mdiTog = new Image();
mdiTog.onload = function () {
var $mdi = M$('.mdiTabs ul'),
$contextMenu = M$($body.append('<div class="suggestions contextSuggesions" style="display:none"></div>')),
$toggle = M$($mdi.append('<li class="mdiTog" style="display:none"></li>')),
visible = false,
active = false;
var hideCtx = function () {
if (visible) {
$contextMenu.anim('', {opacity: 100}, {opacity: 0}, 250, function () {
$contextMenu.css({display: 'none'});
});
visible = false;
}
};
$toggle.css({opacity: 0, display: 'inline-block'}).anim('', {opacity: 0}, {opacity: 100}, 1000).on('click', function () {
var togOS = $toggle.offset(),
menu = '';
M$('li', $mdi.get()).each(function (el, idx) {
if (idx > 1) {
menu += '<li rel="' + idx + '">' + $mdi.text(null, el) + '</li>';
}
});
$contextMenu.css({opacity: 0, display: 'block', top: togOS.top + 'px', left: (togOS.left - 20) + 'px'}).anim('', {opacity: 0}, {opacity: 100}, 400, function () {
visible = true;
}).html('<ul>' + menu + '<li class="uiUtil hr" onclick="ApolloUI.widgets.expose.show()">' + translate('previewAll') + '</li><li class="uiUtil" onclick="ApolloUI.mdi.closeAll()">' + translate('closeAll') + '</li></ul>');
});
$contextMenu.on('click', function (e) {
var target = $contextMenu.eventTarget(e);
if (target.tagName === 'LI' && target.className.indexOf('uiUtil') === -1) {
$contextMenu.fire('click', M$('.mdiTabs li').get(parseInt(target.getAttribute('rel'), 10)));
}
hideCtx();
}).on('mouseleave', function () {
active = false;
}).on('mouseenter', function () {
active = true;
});
setInterval(function () {
if (!active && visible) {
hideCtx();
}
}, 1000);
};
mdiTog.src = 'media/img/ico_16_context.png';
});
私はこの問題をできるだけ早く解決する必要があるので、IE8 / IE9ブラウザーでの複数の連続したリロードでも、onloadを1回だけ実行するように強制するこのコードの提案/変更/追加は大歓迎です。