javascript - svg 元素在 Chrome 中隐藏/显示时重置

标签 javascript jquery google-chrome svg

我有 3 个 SVG <object>代表建筑物 3 个不同楼层的元素。在底部,我有 3 个按钮可以在它们之间导航,执行简单的 hide()show() .

map

当我加载页面时,脚本会在 svg 中设置一些交互式元素,但是当我使用导航按钮在楼层之间切换时,交互式 svg 元素会重置并失去其功能。

互动元素
interactive elements

如何防止这种情况发生?该脚本似乎可以在 Firefox 上运行。

这是隐藏/显示楼层的代码。

function showMap(mapId){
  var map = (typeof(mapId)=="string")? $('#'+mapId) : $(mapId);
  if(!map.is(':visible')){
    maps.hide(); // hides all svg objects
    map.show();  // display the selected one
  }
}

最佳答案

是的,这是 Chrome 的一项“功能”。 “display: none”(包括 css 方式)完全破坏了与 SVG 的所有交互。 使用大小或位置代替:

jQuery.fn.weirdHide = function() {
    $(this).css("width", 0)
        .css("height", 0)
        .css("position", "absolute")
        .css("left", "-9999px");
}

jQuery.fn.weirdShow = function() {
    $(this).css("width", "")
        .css("height", "")
        .css("position", "")
        .css("left", "");
}

$("#map").weirdHide();
$("#map").weirdShow();

关于javascript - svg 元素在 Chrome 中隐藏/显示时重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17128673/

相关文章:

javascript - 使用唯一的 IDS 将相同的按钮 UI 图标添加到不同的按钮

firefox - FireFox、Chrome、Safari 和 Opera 缓存 SSL/TLS session key 多长时间?

javascript - 直接调用或作为工厂函数调用的 ES.next 装饰器

javascript - 如何使用jquery获取行字段(嵌套对象)的值

javascript - console.dir 会对调用它的变量产生副作用吗?

html - Chrome 现在为表格单元格的背景图像添加了右边距

javascript - 通过控制台获取TD元素中的所有名字

javascript - Foundation 4 reveal not working only overlay 显示

jquery - 设计 session 在 .js 调用上立即过期 [AJAX]

php - 如何从传入的 JSON 数据生成表 [Laravel、Ajax]