Я пытаюсь установить позицию contextMenu
и использую Jquery jquery.ui.position
.Для ContextMenu
я использую эту библиотеку: -
https://swisnl.github.io/jQuery-contextMenu/demo
Я пытаюсь расположить ContextMenu
следующим образом: -
$(document).ready(function() {
$.contextMenu({
selector: 'td[id="tdMenu"]',
trigger: 'left',
position: function (opt, x, y) {
try {
opt.$menu.position({
my: 'right top',
at: 'right bottom',
of: $("#tdDiv")
});
} catch (e) {
}
},
items: {
"0": { name: "Hi" },
}
});
});
HTML являетсяследующим образом: -
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td id="tdDiv" style="background-color: yellow;">
Menu Div
</td>
</tr>
<tr>
<td id="tdMenu">
Click Here
</td>
</tr>
</table>
В IE 11
после загрузки страницы и после нажатия кнопки td с идентификатором tdMenu
jquery.ui.position неправильно вычисляет смещение.При втором нажатии он вычисляется правильно.
То, что я нашел, находится внутри jquery.ui.position
, его вычисление смещения выполняется следующим образом: -
function getDimensions( elem ) {
var raw = elem[0];
return {
width: elem.outerWidth(),
height: elem.outerHeight(),
offset: elem.offset() // On first click its calculating wrong value and on second it calculates correctly.
};
}
Я также дал поле для тела как: -
<body style="margin: 0px;">
Если я уберу это поле, оно будет правильно рассчитано и при первом клике.
Я не могу удалить поле тела.Что может быть обходным путем для этого?