我有一个网页,您可以使用window.open
将内容放入弹出窗口。
弹出窗口class
上的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
。我每次都在上面false
获得alert
。我的逻辑错了吗?或者我需要采取完全不同的方式吗?
答案 0 :(得分:1)
它们是独立的窗口,不需要跟踪“活动”元素。每个窗口都有自己的脚本副本及其自己的变量,事件处理程序等。
您的代码中只需要
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
}
答案 1 :(得分:0)
我还没有检查过你的其余代码,但是在检查元素是否有类时你不使用.
。
var fromPopup = $(g_lastClicked).closest("body").hasClass(".pop-up");
应该是
var fromPopup = $(g_lastClicked).closest("body").hasClass("pop-up");