javascript - 查找 `body` 标签是否在弹出窗口中有类

标签 javascript jquery html

我有一个网页,您可以使用 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/

相关文章:

javascript - HTML API——它们是 HTML5 标准的一部分吗?

javascript - href 在导航栏中不工作...有人可以告诉我如何让它工作吗

javascript - AngularJS 将模型绑定(bind)到 ng Repeat(并对其进行评估)

javascript - Slick.js 错误的箭头行为,如何解决?

java - 如何在 Wicket 中启动文件下载并关闭 (jQuery) 对话框?

javascript - Google Maps : Get click or marker (x, y) 标记点击监听器内的像素坐标

javascript - 刷新 php 页面而不重新加载内容?

javascript - 无法从 kendo ui 网格调用 javascript

javascript - 函数不验证输入

jquery - 使用 JQuery 透视查看器