gpt4 book ai didi

html - 如何防止传单 map 元素获得焦点

转载 作者:行者123 更新时间:2023-11-28 00:35:33 24 4
gpt4 key购买 nike

我有一个表格,表格里面有一张传单 map 。我想按 Tab 键在元素之间移动,我不希望 map 或他的元素(按钮、标记等)获得焦点。如何将 tabindex="-1" 添加到 map 控件和元素以防止聚焦,或者我可以做什么来防止聚焦?

这是一个 jsfiddle 来展示我的场景:http://jsfiddle.net/kedar2a/LnzN2/2/

var osmUrl = 'http://{s}.tile.osm.org/{z}/{x}/{y}.png', osmAttrib = '&copy; <a ref="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors',
osm = L.tileLayer(osmUrl, {attribution: osmAttrib });

var map = L.map('map').setView([19.04469, 72.9258], 12).addLayer(osm);

var marker = L.marker([19.04469, 72.9258]).addTo(map);
#map {
height: 150px;
width: 300px;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.5.1/leaflet.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.5.1/leaflet.js"></script>
<input type="text" autofocus />
<div id="map"></div>
<input type="text" />

最佳答案

没有一次性解决方案,但您可以通过分三步禁用每个 map 元素来实现:

  1. 禁用标记的焦点:通过添加 keyboard:false 禁用键盘对标记的支持标记元素。

  2. 添加tabIndex="-1"属性全部<a>位于 .leaflet-control 内的元素分区

    var elements = document.querySelectorAll(".leaflet-control a");
    for (var i = 0; i < elements.length; ++i) {
    elements[i].setAttribute("tabindex", "-1");
    }
  3. 在任何打开的标记弹出窗口中禁用关闭按钮的焦点。

      var marker = L.marker(e.latlng, {
    draggable: true,
    keyboard: false,
    title: "Resource location",
    alt: "Resource Location",
    riseOnHover: true
    }).addTo(map)
    .bindPopup(e.latlng.toString()).on('popupopen',
    function(popup) {
    //disable focus of close button
    var elCloseButton = document.getElementsByClassName("leaflet-popup-close-button")[0];
    elCloseButton.setAttribute("tabindex", "-1");
    }).openPopup();

查看我的实现:http://jsfiddle.net/trkaplan/bv763tkf/

关于html - 如何防止传单 map 元素获得焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56451868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com