我有一个网页,您可以使用 window.open
将内容放大到弹出窗口中。
弹出窗口将在其body
上有一个类
,称为pop-up
。需要注意的重要一点是,两个窗口都使用相同的 JavaScript 文件来处理 click
事件。
我想知道我是在弹出窗口中单击还是在主(父)窗口中单击。因为 HTML
将基本相同。
以下是我尝试执行此操作的方式。我维护了最后一个点击元素的全局变量,这似乎有效:
$(document).click(function(event) {
window.lastElementClicked = event.target;
g_lastClicked = window.lastElementClicked;
});
我知道这很好,因为当我检查最后点击的元素的 tagName
时,它总是正确的。
然后当我想检查“我在哪里”时,我想这样做:
var fromPopup = $(g_lastClicked).closest("body").hasClass("pop-up"); // the line in question
alert(fromPopup);
if (fromPopup) {
// unrelated; I need a check to do resizing if I am in the pop-up
var height = $(window).height();
$("#cvApplication").height(height - 120);
}
因此它将检查最后一个元素,向上遍历 DOM 到主体并查看它是否具有 class
。在上面的 alert
中,我每次都得到 false
。我的逻辑错了吗?还是我需要采用完全不同的方式来执行此操作?
最佳答案
它们是独立的窗口,无需跟踪“事件”元素。每个窗口都有其自己的脚本副本及其自己的变量、事件处理程序等。
您的代码中只需要
if ($(document.body).hasClass("pop-up")) { // Without the . before pop-up
// This code is running in the pop-up
} else {
// This code is running in the main window
}
关于javascript - 查找 `body` 标签是否在弹出窗口中有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29017277/