我有一个iframe,在其中检测到右键单击并将鼠标事件传递给父级中的函数。在这里,(在父函数内部),我具有显示自定义上下文菜单的逻辑,并将上下文菜单html标记插入到父DOM中。因此需要根据视口(或父DOM)的鼠标位置,但是我收到的是相对于iframe的。
我尝试使用offsetTop和offsetParent,但这仅迭代到内页的body标签为止。
最佳答案
这是我使用的功能:
// Define class that will hold Object coordinates
function CTopLeft(i_nTop, i_nLeft) {
this.nTop = i_nTop;
this.nLeft = i_nLeft;
}
function GetTopLeftFromIframe(i_oElem) {
var cTL = new CTopLeft(0, 0);
var oElem = i_oElem;
var oWindow = window;
do {
cTL.nLeft += oElem.offsetLeft;
cTL.nTop += oElem.offsetTop;
oElem = oElem.offsetParent;
if (oElem == null) { // If we reach top of the ancestor hierarchy
oElem = oWindow.frameElement; // Jump to IFRAME Element hosting the document
oWindow = oWindow.parent; // and switching current window to 1 level up
}
} while (oElem)
return cTL;
}
这是来自http://codecorner.galanter.net/2012/02/26/absolute-coordinates-of-element-inside-of-iframe/
关于javascript - 确定鼠标在iframe中的位置,但包括父项在内,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6572992/