Javascript 单击 Svg/object 元素不会在移动设备上触发

拉瑟·弗雷德里克森

嗨,我在点击/触摸工作时遇到问题,显示它会在 Svg 外部的 DOM 中切换一个 div,以在object用于嵌入 SVG时在 svg 内部的元素上显示我尝试了很多不同的方法,但都没有做到。这里有没有友好的人可以给我正确的方法来做到这一点

我尝试使用touchstart我还尝试了另一个代码,该代码不适用于在桌面和移动设备上都可以使用的 svg。但是当我为此使用该脚本时,它无法在 svg 中读取。感觉问题在于移动设备不会以相同的方式读取 svg,因此代码不起作用。

我确实看过这里的很多帖子,但大多数都与点击事件无关,而且我真的没有重写它们的技巧。

所以这里是结构:首先我有我的。

在此之下,我加载了脚本(我确实尝试在对象上使用它,但在 html head 中仍然什么都没有)

<object class="nSvg" type="image/svg+xml" data="img/emne.svg"></object>




<div id="boxOpen" class="boxOpenHidden">
    <div id="naturSkiferBruges">
        <h2>test</h2>
        <p>test</p>
    </div>
</div>
<script type="text/javascript">
   var nSvg = document.getElementsByClassName("nSvg")[0];
   nSvg.addEventListener("load",function(){
               var sSvg = nSvg.contentDocument;
               var subEle = sSvg.getElementsByClassName("myclass")[0];
               subEle.addEventListener("click",function(){
                       $('#boxOpen').toggleClass('boxOpenVis');
                }, false);
             }, false);
</script>

这是我试图点击的 svg 元素:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1920" height="2000" viewBox="0 0 1920 2000">
<text class="myclass" data-name="myclass" x="158.25" y="1298.112">Hvor kan Kobbertag et bruges?</text>
</svg>
萨尔维诺

给你哥们:

HTML:

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1920" height="2000" viewBox="0 0 1920 2000" class="nSvg">
  <text class="myclass" data-name="myclass" x="158.25" y="1298.112">Hvor kan Kobbertag et bruges?</text>
</svg>

JS:

   var Svg = document.getElementsByClassName("nSvg")[0];
   let texts = Svg.getElementsByClassName("myclass");

   for (text of texts) {
     text.addEventListener("click", function() {
       alert("OK");
     }, false);
   }

现场演示:https : //jsfiddle.net/mr39e54h/

PS:尝试点击文字

更新:您可以通过遍历所加载的SVG事件绑定childrencontentDocument

var nSvg = document.getElementsByClassName("nSvg")[0];
nSvg.addEventListener("load", function() {
  var text = nSvg.contentDocument.getElementsByClassName('myclass')[0];
  text.addEventListener("click", function() {
     $('#boxOpen').toggleClass('boxOpenVis');
  }, false);
}, false);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Javascript按类单击元素

Javascript:单击元素而不是按钮

单击JavaScript中的嵌套元素

ng单击移动或平板设备上的触发

用JavaScript创建的模态不会在移动设备上消失

Vue转换不会在单击按钮时触发

Javascript Blob()不会在第一次单击中创建文件

C#MouseClick事件不会在中键单击或右键单击时触发

用javascript单击<li>元素

元素不会在JavaScript中的页面加载时被隐藏

将addEventListener设置为数组中的元素不会在文本字段中设置预期值-Javascript

onbeforeunload事件不会在单击浏览器按钮时触发,而是在CMD + R / F5上运行

简单的JavaScript按钮单击事件不会触发

焦点单击不会在元素外部触发,除非单击元素一次

fireEvent不会在React组件上单击按钮

JavaScript:按类单击元素不起作用

javascript,单击后更改与单击元素不同的元素的html

单击按钮不会在第二次单击时触发

jQuery on()不会在动态生成/单击的单选按钮上触发

每个元素上的JavaScript单击功能

单击并拖动带有溢出的元素:隐藏不会在Firefox中触发onmouseout

单击时克隆的元素不起作用Javascript

单击禁用的选择元素不会触发其父元素的单击或鼠标按下事件

jQuery-行单击事件不会在新添加的表行上触发

<script type = text / javascript> $(function(){$('#buttonVal')。click(function(){警告不会在按钮单击时触发

Javascript 单击侦听器,但不会在子元素上触发?

Xamarin 命令不会在按钮单击时触发

javascript 查询选择器不会在单击按钮时切换 css 设置

JavaScript 在单击事件上循环可单击元素,并跳过特定的单击元素