OpenLayers 通过 Popups 窃取点击事件

2024-01-14

为什么 FramedCloud 弹出窗口会窃取弹出窗口内的点击事件?

current_popup = new OpenLayers.Popup.FramedCloud(
    "featurePopup",
    f.geometry.getBounds().getCenterLonLat(),
    new OpenLayers.Size(0,0),
    "<b>Наблюдения</b><br/>" + $.map(features, function(fe) { return fe.attributes.description; }).join('<br/>'),
    null, false, null);
    map.addPopup(current_popup, true);



$('#map').on('click', function() { console.log('test'); return false; });

始终捕获单击事件,除非我单击弹出窗口内的链接。弹出窗口和锚点是#map.

  • 单击地图 => 回调被触发
  • 单击标记 => 回调被触发,弹出窗口显示
  • 单击弹出窗口内部(不是在链接上)=> 回调不会被触发
  • 单击弹出窗口内的链接=>以同样的方式,没有任何反应

OL那部分的代码相当晦涩。

为什么它会捕获弹出窗口内的点击?我该如何把它们拿回来?

edit:在 OL 中进行更深入的调试:触发此函数:

bindAsEventListener: function(func, object) {
    return function(event) {
        return func.call(object, event || window.event);
    };

event.target是锚点,正是我所期望的:

<a class="edit-card-link" href="/form/?id=806">...</a>

func is:

handleBrowserEvent: function(evt) {
    var type = evt.type, listeners = this.listeners[type];
    if (!listeners || listeners.length == 0) {
        return;
    }
    var touches = evt.touches;
    if (touches && touches[0]) {
        var x = 0;
        var y = 0;
        var num = touches.length;
        var touch;
        for (var i = 0; i < num; ++i) {
            touch = touches[i];
            x += touch.clientX;
            y += touch.clientY;
        }
        evt.clientX = x / num;
        evt.clientY = y / num;
    }
    if (this.includeXY) {
        evt.xy = this.getMousePosition(evt);
    }
    this.triggerEvent(type, evt);
}

this是 OpenLayers.Event 类实例,evt.target依然是那个锚,listeners包含 1 个监听器:

function (evt){OpenLayers.Event.stop(evt,true);}

是这个原因吗?我怎样把它取出来?


如果你想阻止弹出窗口窃取鼠标事件,那么在你的CSS你可以,正如这里所建议的 https://stackoverflow.com/a/10448248/613495,设置pointer-events: none;与创建时给出的弹出窗口 ID 相对应的 id。因此,在你的情况下,它将是:

#featurePopup{
    pointer-events: none;
}

当我想避免我显示的弹出窗口闪烁时,它对我来说就像一个魅力mouseover.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenLayers 通过 Popups 窃取点击事件 的相关文章

  • 在 Cypress 中提取部分文本

    我是 Cypress 的新手 我需要从我的应用程序中提取文本的动态部分 div Hello World greeting number 9123 div 在此示例中 我需要从 div 中提取 9123 以便稍后在测试中使用 知道我应该怎么做
  • 在函数调用时加载外部 Javascript

    我想知道如何从函数将外部 Javascript 加载到我的文档中 这是一种方法 function loadDaFun var script document createElement script script src path to y
  • d3 树 - 有相同孩子的父母

    我一直在将代码从 JIT 转换为 D3 并使用树布局 我已经复制了代码http mbostock github com d3 talk 20111018 tree html http mbostock github com d3 talk
  • JavaScript 中的 ParseFloat 函数

    当我添加两个文本框值时1 001 and 0 001然后我做了一个parseFloat I get 1 0019999999 我要它1 002 你能帮助我吗 JavaScriptNumber http www w3schools com j
  • 如何在D3节点中放置图像?

    到目前为止 我已经创建了这些 D3 节点 用于创建可折叠的层次树 到目前为止 这些节点的颜色为 AA1C1C 深红色 以表明如果您单击它们 它们将扩展到更多节点 我想要做的是在节点中使用图像中的位置 这对于所有用户来说都是一个加号 以知道它
  • javascript中.match和.test有什么区别[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在浏览 JavaScript 时 我刚刚遇到了 match test 和 exec有什么不同 这是最快的 首先 exec and test
  • 添加数组的总和。显示1个输出

    更新 这个问题的答案如下 感谢在不同线程上进行的 dougtesting 将数组相加 显示总和 https stackoverflow com questions 45724641 add array together display su
  • 如何在 jQgrid 中隐藏列但在添加/编辑面板中显示此列

    我想要一种我使用的控制形式 但字段数量太高了 如何显示网格 但只有表单添加 编辑弹出面板中的某些字段显示所有字段 以下是您可以执行此操作的方法 colModel name email label E mail editable true h
  • 如何按日期升序对对象进行排序?

    如果我有一个对象列表 var objectList LIST OF OBJECT each object列表中包含三个属性 name date gender 如何按 对列表中的对象进行排序date 属性升序 the date 属性包含字符串
  • Antd datepicker (date.clone/date.load 不是函数)

    我有一个反应应用程序 有一个复选框可以禁用日期选择器 但当我使用复选框禁用它时 我无法选择任何日期 如果我删除复选框及其功能 则不会出现错误 目前 我得到 date clone 不是函数 error const dateFormat YYY
  • 如何检查字符串中是否存在阿拉伯字符(javascript)

    如何用javascript语言检查字符串中是否存在阿拉伯字符 根据维基百科 http en wikipedia org wiki Basic Multilingual Plane 阿拉伯字符属于 Unicode 范围 0600 06FF 因
  • jQuery 删除函数真的删除 Dom 元素吗?

    我真的想知道 jQuery 是否remove http api jquery com remove 函数确实从 DOM 中删除元素 首先 我看了here https stackoverflow com questions 2185760 j
  • PHP:在执行 php 脚本时显示“正在加载”页面

    这就是我现在所拥有的 我有一个网页 当访问该网页时 它会通过开放 API 连接到 Surveygizmo com 检索大量数据 然后将这些数据返回给我进行处理 此过程大约需要 10 12 秒 在执行时 页面只是处于 正在加载 状态 并且我会
  • 使用Doctype让scrollTop返回0,为什么?

    当我将此 Doctype 放入我的文档中时document body scrollTop返回零 这是为什么 当您使用该 Doctype 时 您会将每个当前浏览器放入所谓的几乎标准模式 http hsivonen iki fi doctype
  • 如何使 Meteor 上的服务器可以访问文本文件

    我很惊讶我无法在这里搜索我的答案 似乎没有其他人遇到这个问题 当您运行meteor服务时 js html等被打包在 meteor local build文件夹中 但它似乎排除了不是js或html的内容 我有一个名为 magicsets 的文
  • queue.js 是如何工作的?

    我一直试图理解如何Mike Bostock 的queue js https github com mbostock queue blob master queue js有效 但我看不出它是如何工作的 我不明白的部分是代码如何设法继续执行回调
  • 如何使 CSS 动画/过渡以固定速度而不是固定持续时间播放? [复制]

    这个问题在这里已经有答案了 我有一个 CSS 动画 可以使元素沿直线移动未定义的距离 据我所知 动画具有固定的持续时间 因此无论元素必须移动多远 动画始终需要相同的时间来运行 我该如何制作才能使动画没有固定的duration 但有固定的运动
  • 如何创建浏览器插件?

    我必须创建一个插件 当用户将鼠标悬停在某些术语上时 该插件必须显示信息 谁能告诉我如何做的方向 我对创建插件没有太多想法 我知道我想要做的事情可以通过java脚本来完成 但是java脚本文件可以作为浏览器插件安装吗 任何对此的想法将不胜感激
  • javascript初学者:在javascript中添加动态样式? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用 Javascript 创建 标签 https stackoverflow com questions 524696 how to create a style tag with javasc
  • JavaScript:如何在 Internet Explorer 中模拟更改事件(委托)

    UPDATE 回顾 小提琴和赏金 这个问题并没有引起太多关注 所以我将花一些时间来解决这个问题 我知道我的答案和问题都过于冗长 这就是为什么我继续设置这把小提琴 http jsfiddle net vVA8N 在我看来 这是我目前必须用来接

随机推荐

  • ps au | 的结果grep ssh 在 Node.js(使用spawn/pipe)与 shell 中的不同

    我正在研究节点流和子进程 所以我想用管道模拟下一个 shell 命令 ps au grep ssh 所以我写了下一个代码 var spawn require child process spawn var ps spawn ps au va
  • 当浏览器不支持 JavaScript 时,如何在单击链接后执行脚本?

    我正在尝试使用如下所示的 Facebook 转换代码 其中包括script 和 noscripts 标签
  • rac_signalForSelector:需要空实现

    我有一个实现 UICollectionViewDelegate 协议的类 我正在使用 rac signalForSelector 来注册选择 如下所示 self rac signalForSelector selector collecti
  • 自定义 MapHttpAttributeRoutes 以进行 Web Api 版本控制

    我正在实施 Web API 版本控制 如下所示Web API 版本控制 http www codeproject com Articles 741326 Introduction to Web API Versioning 我的控制器位于
  • 网站部署后需要强制刷新

    部署新版本的网站后 浏览器会从旧网页的缓存中加载所有内容 直到强制刷新完成 图像是旧的 cookie 是旧的 并且一些 AJAX 部分无法工作 部署后我应该如何继续为用户提供最新版本的页面 该网页是使用IIS7 的ASP Net网页 您可以
  • 可靠地检测用户是否在网页上使用鼠标?

    在我们的页面上 我们有一些长水平滚动的 iframe div 如果用户使用鼠标 他们可以使用滚动条滚动 我们希望他们能够选择 iframe 中的文本 但是 如果他们仅使用触摸 则滚动条会很麻烦 我想在整个事物上覆盖一个透明元素 以使他们能够
  • 如何在 PostgreSQL 中生成虚拟表来生成日期序列?

    我想生成一个日期列表 希望与另一个表连接 但我不知道要使用什么语法 类似于 SELECT dates date transactions account id transactions amount FROM as dates LEFT J
  • 订票系统:数据库访问问题

    我正在创建一个巴士票预订系统 我创建了一个名为 Traveler 的数据库和两个分别名为 Useriden 和 BusDB 的表 在 aspx cs 文件 注册页面 中 我正在检查重复的用户名 但它只是导航到下一页 我已经尝试了一切 但无法
  • Rails 中的composed_of - 何时使用它?

    什么时候应该使用 ActiveRecordcomposed of http apidock com rails ActiveRecord Aggregations ClassMethods composed of类方法 就我个人而言 我认为
  • 将Java程序运行到另一个程序中[重复]

    这个问题在这里已经有答案了 可能的重复 在java程序中执行另一个jar https stackoverflow com questions 1320476 execute another jar in a java program 我尝试
  • 是否可以以编程方式向场景添加行?

    我想在每个 SpecFlow 测试的开头添加相同的行 这一行指定了几个场景的列表 这些场景会随着时间的推移而改变 因此为每个测试维护这个列表是不可行的 例如 Given I have set my site theme to
  • 发送用户 ID 和 access_token

    我正在使用 React 前端在 ASP NET Core 2 1 应用程序中实现 Auth0 一旦用户进行身份验证 我就会得到access token and an id token 我的目的很明确access token是授予对我的 AP
  • Chef-solo 从 bash 脚本获取日志

    我正在通过 Chef 执行 shell 脚本 如下所示 execute Run postgres data migration do command home ubuntu build target infra base psql10 mi
  • 单一职责原则有什么用?

    我试图理解单一职责原则 但我很难理解这个概念 我正在阅读 Lucian Paul Torje Adrian Ianculescu Kamalmeet Singh 所著的 Java 设计模式和最佳实践 一书 在这本书中我正在阅读单一职责原则章
  • Webpack 不排除 node_modules

    我正在使用 webpack 作为我正在构建的 Node 框架 尽管我应该承认 我应该使用 gulp 当我包含 EJS 模块时 webpack 将其包含在编译的源代码中 即使我明确告诉它排除 node modules 目录 module ex
  • 创建一个常量但本地的数组

    有时我需要针对单个方法的硬编码查找表 我也可以创建这样一个数组 在方法本身本地 类内静态 第一种情况的示例 public int Convert int i int lookup new 1 2 4 8 16 32 666 return l
  • gradle远程调试流程

    我正在添加GRADLE OPTS系统环境变量为 Xdebug Xrunjdwp transport dt socket server y suspend y address 5005 我已经从 IntelliJ IDEA 为此套接字创建了远
  • 如何修复错误“反编译的 .class 文件字节码版本 52.0 (Java 8)

    当我在模拟器上测试我的应用程序时 它工作正常 但是当我在真正的 android 10 0 版本 手机上运行该应用程序时 log cat 显示我根本无法理解的错误 这是非常令人困惑的 因为它在一部手机 较低版本 上运行良好 但在另一部手机 A
  • 如何在heroku cedar堆栈上使用virtualenv进行pip卸载?

    我尝试使用以下命令卸载 heroku 上的模块 heroku run bin python bin pip 卸载任何东西 Pip 在 app 树中显示该模块 然后声称已卸载该模块 但再次运行相同的命令显示它安装在 app 树中的同一位置 有
  • OpenLayers 通过 Popups 窃取点击事件

    为什么 FramedCloud 弹出窗口会窃取弹出窗口内的点击事件 current popup new OpenLayers Popup FramedCloud featurePopup f geometry getBounds getCe