SVG 事件监听器:如何添加它们以及您可能需要的原因

已发表: 2022-12-25

如果您尝试向 SVG 添加事件侦听器,您可能会遇到一些问题。 虽然 SVG 是基于 XML 的,但它不支持用于添加事件侦听器的标准 DOM 方法。 此外,某些浏览器可能无法识别 SVG 事件。 不过,有几种方法可以解决这个问题。 您可以使用像 jQuery 这样的库来添加事件侦听器,或者您可以使用一点点 JavaScript 将它们直接添加到 SVG 元素中。

我们可以将事件处理程序附加到 Svg 吗?

我们可以将事件处理程序附加到 Svg 吗?
图片来源:mql5.com

SVG 是否支持事件处理? SVG DOM 有一个 XML 基础,这意味着每个元素都是可用的。 如有必要,可以将 JavaScript 事件处理程序附加到元素。

在本教程中,我们将介绍如何使用 SVG 和 ECMAScript 处理事件。 这些事件用于生成将对用户输入作出反应的脚本。 事件循环应用程序随时间连续跟踪系统或用户事件。 有许多应用程序可以在操作系统之上运行,例如图形用户界面、守护进程和程序。 当事件对象触发事件触发器时,它会连接到其事件处理程序(javscript 函数)。 一个事件也可能涉及大量的听众。 事件从嵌套层次结构遍历到感兴趣的祖先元素所在的文档元素。

以下是基本事件属性和方法的列表。 鼠标事件的属性和方法继承自 UI 事件。 某些属性在不同的浏览器和 vas(或 vas-as)中的行为与其他属性不同。 一些 UA 不显示所有 MouseEvent 类型的 .timeStamp 属性,但只显示某些类型(例如,单击)。 虽然有些人报告有鼠标中键或右键但不使用上下文菜单,但其他人却这样做。 detail 属性并不总是在所有 UA 中使用。 mapApp 对象除了向SVG 内容开发人员隐藏处理各种查看器的复杂性外,还隐藏了它。

ASV3 中不处理突变事件,但可以使用 mapApp.getScreenCTM 方法处理它们。 由于突变事件的某些属性和方法继承自一般事件,因此这些事件可作为突变事件的优秀模型。 可以在一个单独的窗口中观察到SVGResize 事件,该窗口已打开,其中包含示例 5,并且已被放大。 如果你想让元素不受缩放和平移的影响,这些事件很有用。 为了补偿滚动,我们可以检测它,反转它,并用 viewBox 坐标系进行补偿。 设置事件侦听器后,我们将状态文本的内容指定为正在键入,以便用户可以输入文本框。 方法是我们给它起的名字。

因为此事件的祖先受 SVG UA 保护,所以我们必须停止传播我们的 evt 对象。 如果我们删除这个方法,事件将到达 svg 根元素,它现在是一个新定义的点击事件监听器,立即取消输入。 stopTyping() 函数带走临时事件侦听器,关闭状态文本,并将类型变量 typeInitialized 设置为 false。 为了确定退格键和回车键必须使用哪些字符代码,我们在这个原始文本框中执行了两个测试:退格键为 8(在本例中,我们删除了最后一个字符)或 10 或 13。它停止转发到浏览器在 evt.preventDefault() 方法中完成后。 用户不要使用浏览器快捷方式输入字母,这一点至关重要。

你能给图像添加事件监听器吗?

你能给图像添加事件监听器吗?
图片来源:imgur.com

是的,您可以向图像添加事件侦听器。 您可以将事件侦听器添加到页面上的任何元素。

在这种情况下,侦听器会侦听事件,因为图像发生了变化。 DataChanged() 方法在执行后用于更新结果窗口的总和值。 当您关闭实时图像时,侦听器对象超出范围,并调用析构函数,声明图像已关闭。 在删除侦听器之前,脚本不必侦听超过四个更改。 DataChanged 是 DM 脚本语言中的预定义事件。 当新图像添加到计数器时,它会递增。 发生四次更改后,听众将从图像中移除。 当检测到四个更改或图像已关闭时,析构函数会做出响应。

我可以给标签添加事件监听器吗?

如何在标签中包含侦听器事件? 像 addEventListener() 方法这样的方法允许您将事件侦听器添加到任何 HTML DOM 对象,例如 HTML 元素、HTML 文档、窗口对象或任何其他支持事件的对象,例如 xmlHttpRequest 对象。

事件可以是任何 HTML DOM 对象的侦听器,例如 HTML 元素、HTML 文档、窗口对象或支持事件的对象(例如 xmlHttpRequest 对象)。 addEventListener() 方法允许您在任何 HTML DOM 对象上添加事件侦听器。 我们将演示如何使用计算机语言来解决 Add Event Listener To All A Tags 问题。 addEventListener 方法允许您向特定元素添加多个事件。 您只能使用 onclick 向元素添加一个事件。 您可以在 JavaScript 中使用 CSS 选择器来选择多个 DOM 元素。 无需发射闪电; 它由系统的每个组件处理。

#myclass:一种与网页交互的新方式

var obj 是一个文档。 SelectorAll(#myClass) 用于选择类(var i = 0; i .length; i++) obj(i) _ _ _ _ _ _ _ 添加一个新的事件监听器('click', function()', perform something /);

Svg 指针事件

SVG pointer -events 属性指定元素是否可以成为指针事件的目标。

它是一个 CSS 属性,通过其值与元素属性分开,即指针事件属性。 使用此工具,我们可以识别 sva 文档或元素的哪些部分可以从鼠标、触控板或手指等设备接收事件。 指针事件除了是与设备无关的、基于 Web 的用户输入功能外,还称为与设备无关的输入概念。 当我们在 SVG 文档中插入链接或事件侦听器时,交互区域并不总是必须是矩形。 隐藏或不显示的元素可以在不可见的情况下进行绘制,具体取决于可见属性值或 CSS 属性是否隐藏。 了解指针事件值的影响对于了解绘制、可见和不可见如何影响元素至关重要。 您可以使用 pointer-events CSS 属性来增加图像的点击区域。

对于 HTML,唯一有效的值是 auto 和 none。 如果填充值为零,则该区域可见,但未绘制。 在 CodePen 上,Tiffany Brown (@webinista) 描述了 SVG 图像的可点击区域。 使用边界框元素将消除对幻影元素的需要。 大多数浏览器将嵌入event.target 元素,而不是 HTML 按钮。 pointer-events=”none” 意味着你不需要将 JavaScript 怪癖记入内存。 每个支持 SVG 的浏览器都包含一个用于显示 SVG 文档和元素的选项。

Safari 12 完全支持 Css 指针事件

什么是指针事件? 有哪些例子?
指针设备是为指针设备触发的 DOM 事件。 通过创建单个 DOM 事件模型,它们可用于处理指向输入,例如鼠标、笔、手写笔或触摸(例如一个或多个手指)。
Safari 是否支持 Safari 中的指针事件或事件数据?
借助 Safari 12 上完全支持的 CSS 指针事件(针对 HTML),任何通过 Safari 12 访问您的页面的用户都可以看到它们。
我如何与 svg 交互?
因为 svg 是一种标记语言,所以你可以使用 jQuery 之类的 js 库与之交互。 svg 的查询可以为您提供元素列表或类选择的元素数组。 可以使用事件处理程序附加事件,例如单击、鼠标悬停、鼠标输入等。