我有一个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/

10-11 23:50