【问题标题】:Enable pointer-events when click on an iframe embedded map单击 iframe 嵌入地图时启用指针事件
【发布时间】:2017-03-03 10:25:13
【问题描述】:

我在 iframe 标记中有一张地图,效果很好。我想要的只是当点击框架时指针事件再次启用并交互(缩放、点击标记等)

<iframe id="map" src="map.html"></iframe>

在我的 css 文件中,我有以下样式

#map {
        margin-left:0px;
        width:107%;
        pointer-events: none;
    }

指针事件有效,我无法与地图交互。 我想要的是当点击地图时,指针事件变为“自动”

我已经尝试过这段 javascript 代码,但没有任何反应。有什么想法吗?

<script>
   $(document).ready(function() {
      $('#map').css('pointer-events', 'none');

      $('#map').click(function() {
        $(this).css('pointer-events', 'auto');
      });
   });
</script>

提前致谢

【问题讨论】:

    标签: javascript jquery css google-maps iframe


    【解决方案1】:

    您无法获取具有“pointer-event:none”的元素的点击事件。你应该做的只是将它添加到一个 div 中。

    例如,

    <div class="map-wrapper"><iframe id="map"></iframe></div>
    

    然后,将您的脚本称为

        <script>
           $(document).ready(function() {
              $('#map').css('pointer-events', 'none');
              $('.map-wrapper').click(function() {
                $(this).find('#map').css('pointer-events', 'auto'); // just $('#map') also fine
              });
              $('.map-wrapper').mouseleave(function() {
                $(this).find('#map').css('pointer-events', 'none'); // making it not clickable when it's not in focus
              });
    
           });
        </script>
    

    希望这会有所帮助!

    【讨论】:

    • 谢谢,这很有帮助!最后,我将.click 事件更改为.mouseenter 事件,然后根据该元素的onmousedown 事件存储我是否与iframe 之外的另一个元素交互的变量。在.mouseenter函数中,我接着说如果iframe之外没有交互,则执行。这使您可以在 iframe 内拖动而无需先单击。
    • 哇,现在我想起来我本来可以使用.onmousedown。傻我!现在太晚了,改也没意义。
    猜你喜欢
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    • 2020-03-24
    • 2018-10-27
    • 2011-09-08
    • 2013-12-28
    • 2012-10-31
    • 1970-01-01
    相关资源
    最近更新 更多