“onclick”不适用于具有 svg-image 的对象元素[重复]

2024-02-04

当我使用onclick的属性object-html 文档中的元素,它不响应点击。

在我的文档中,我有一个 svg 图像并将其存储在object-element,因为图像中存在一些动画,仅使用img-tag.

在下面的简化示例中,onmouseover对两个对象都有效,但是onclick只适用于object没有 svg 图像。

document.getElementById('test1').onmouseover = hover;
document.getElementById('test1').onclick = click;
document.getElementById('test2').onmouseover = hover;
document.getElementById('test2').onclick = click;

function hover() { alert('Hovered');};
function click() { alert('Clicked');};
<object id='test1' data="https://upload.wikimedia.org/wikipedia/commons/0/01/SVG_Circle.svg" height="50px"></object>

<object id='test2' height="50px" border="1px solid black">some object</object>

我在这里做错了什么吗?或者有其他有效的替代方案吗?

给出的答案这个(以及相关问题) https://stackoverflow.com/questions/25916403/how-to-bind-click-event-to-object-tag建议使用pointer-events: none放在 svg-image 上并将其包装在 div 中并将侦听器应用于该 div。但我需要 svg-image 来响应mouse events,因此无法设置pointier-events: none.


经过一番研究,我发现您的主要问题是:

The <object> tag 无法点击。 (*)

(*)除非<object>标签为空,它的行为将与<iframe>标签,受到 CORS 策略的严格限制,浏览器将阻止任何修改源的尝试。

Why?

The CORS安全策略 https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS是一种使用额外的机制HTTP 标头 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers告诉(或授予权限)浏览器使用和操作外部域内容。

这是一项安全策略,因为想象一下:

有人有一个名为的恶意网站stackoverflow.co。这个恶意者决定通过 iframe 加载网站stackoverflow.com并操纵其内容来欺骗用户进入虚假的登录页面,当用户输入他的私人凭据时,他并没有登录到官方网站,因此他的凭据将被恶意网站窃取。

好吧,CORS 是这里的英雄。由于这个安全策略,远程服务器可以发送一个额外的标头,如下所示:Access-Control-Allow-Origin: *并且浏览器确定是否通过以下方式加载了任何内容<iframe> or <object>标签,任何修改其内容的尝试都应该被阻止。

自 2019 年以来,现在这是standard https://www.w3.org/TR/cors/在网络中,大多数浏览器都会检测到此 CORS 标头并防止此类利用。

那你该怎么办?

好吧,如果您的问题是需要加载 svg,最快的解决方案是通过<img> tag.

否则,你将无法在一个容器中注入、使用、处理或执行任何操作。<object> nor <iframe>包含 CORS 标头的标记。除了onload.

其他来源:

可以找到之前回答过类似问题的用户here https://stackoverflow.com/a/25916723/5568741.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“onclick”不适用于具有 svg-image 的对象元素[重复] 的相关文章

  • 使用 moment.js 检查输入日期是否为星期一

    好吧 我想检查日期是否是星期一 例如 var myDate new Date moment myDate DD MM YYYY dayIs monday 在我的国家 一周的第一天是星期一 所以 我真的想检查输入日期是否是一周的开始 我尝试使
  • 如何将此 HTML 表格布局解决方案转换为浮动 div 解决方案?

    我经常需要列出各种尺寸的项目images在左边和text在右边 像这样 替代文本 http www deviantsart com upload 7s01l5 png http www deviantsart com upload 7s01
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • Node.js - console.log 不显示数组中的项目,而是显示 [Object]

    我在注销对象内数组的内容时遇到问题 实际的物体看起来像这样 var stuff accepted item1 item2 rejected response Foo envelope from The sender to new item1
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • iOS7 中“-webkit-overflow-scrolling: touch” 最初的屏幕外元素被破坏

    既然转基因种子已经发布了 我们现在可以谈谈了 看起来 iOS7 中的 webkit overflow scrolling touch 已损坏 最初不在屏幕上的元素的触摸事件不会触发 或者在某些情况下只是不可靠 这是一个例子
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • 使用 JS 合并具有相同值的相邻 HTML 表格单元格

    我已经为此苦苦挣扎了一段时间 我有一个根据一些 JSON 数据自动生成的表 该数据可能会有所不同 我想合并第一列中具有相同值的相邻单元格 例如此表中的 鱼 和 鸟 table tr td fish td td salmon td tr tr
  • 如何将送货地址复制到帐单地址

    我想知道是否可以将送货地址复制到帐单地址 当用户单击与送货地址相同的复选框时 送货地址值将被复制到账单输入字段 我完成了大部分部分 但我不确定如何将选择菜单 状态 值复制到帐单地址 我真的很感谢任何帮助 My code document r
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • 淡出和循环一组 div 的最佳方式

    假设我有以下 div div class a You are funny div div class b You are smart div div class c You are cool div 最好的展示方式是什么div a持续 5
  • 我可以停止 :hover 应用于元素吗?

    假设我有一些 CSS button hover font weight bold 我怎样才能防止 hover随意应用样式 我的目标用例是当元素被禁用时 例如 使用这个 HTML
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • JavaScript onresize 事件多次触发

    我在尝试仅在触发 onresize 事件时运行一次函数时遇到一些麻烦 我已经看过这个问题DOM onresize 事件 https stackoverflow com questions 1500312 javascript onresiz
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • HTML 默认图像大小

    我在我的代码上显示 3 张图片 图片具有不同的尺寸 宽度和高度 div class row div class col lg 12 h2 class page header Gallery h2 div div class col md 4

随机推荐

  • 2 个 TextView,左侧带省略号,右侧带 nowrap,单行

    第一次在这个论坛发帖 希望一切顺利 我正在为我所在城市的公共交通开发 Android 应用程序 这是我所拥有的 http s28 postimg org i8cdifwgd actual png short destination next
  • 读取嵌入双引号和逗号的 CSV 文件

    我正在尝试使用 data table 包中的 fread 函数读取脏 CSV 文件 但在字符串值中嵌入双引号和逗号时遇到问题 即引用字段中存在未转义的双引号 以下示例数据说明了我的问题 它由 3 行 行和 6 列组成 第一行包含列名称 SA
  • base64编码长度参数

    我正在解码一个 Base64 字符串 修改它 然后用 Ruby 重新编码 当我重新编码时 问题是 ruby 编码库在 60 个左右的字符后添加换行符 我怎样才能告诉它没有每行最大字符数限制 val QmFzZTY0IGlzIGEgZ2VuZ
  • 无法使用InputStream读取API读取所有字节?

    我在 java 套接字中读取图像字节时遇到问题 我的 iOS 客户端正在此处发送图像 它需要读取总字节并将其作为图像存储在服务器端 当我通过 iOS 模拟器测试时 效果非常好 因为 如果我在模拟器中测试 它会将图像发送到46 577 字节
  • PouchDb find:为什么我的索引没有被使用?

    我正在使用 PouchDb 和插件 PouchDb find 在 ionic Web 应用程序中查询本地数据库 几乎在每个用例中 当我创建索引时 我都会在查询时收到以下警告 docs warning no matching index fo
  • C# 查找相关文档片段以显示搜索结果

    在为我正在构建的网站开发搜索时 我决定采用廉价且快速的方法 使用 Microsoft Sql Server 的全文搜索引擎 而不是像 Lucene Net 这样更强大的引擎 不过 我想要的功能之一是谷歌式的相关文档片段 我很快发现确定 相关
  • WPF - 数据模板的参数?

    我有一个列表框 显示有关员工的数据 例如姓名 部门照片 徽章号码等 员工可能有不同的类型 例如经理 员工 志愿者 我有 3 个独立的数据模板 每种类型一个 所有这些模板显示的数据基本相同 但呈现方式不同 根据登录应用程序的用户 图片 徽章编
  • 如何从Scala的标准库继承Scaladoc?

    如果我理解正确的话 方法的 Scaladoc 应该自动继承它覆盖的父方法的 Scaladoc 这似乎适用于一组本地类 但在从 Scala 的标准库 可能还有任何外部依赖项 扩展时则不然 class LocalParent some docu
  • 搜索文本后去掉 Vim 的高亮显示

    在 VIM 中 使用 命令查找文本后 该文本保持突出显示状态 删除它的命令是什么 我根本不想删除突出显示功能 但一旦找到我需要的内容 我又不想拥有所有这些明亮的文本点 Thanks 输入 noh
  • SQL-根据列组合连续的日期行

    假设我有以下 SQL 结果 BegDate EndDate quanitty 1 1 2014 1 31 2014 1 2 1 2014 2 28 2014 1 3 1 2014 3 31 2014 2 4 1 2014 4 30 2014
  • AngularJS $resource GET 中的多个参数

    use strict angular module rmaServices ngResource factory rmaService resource function resource return resource RMAServer
  • 编译先前预处理的文件会更改输出

    我有一个源文件 我使用选项对其进行预处理 E and P 对于基于 vxWorks 的嵌入式平台使用 GCC 4 1 2 所有其他选项与我编译文件时相同 这些选项是 Wall march pentium nostdinc O0 fno bu
  • 在 matplotlib 中打开灯

    我有以下Python代码 import numpy as np from matplotlib import pyplot as plt plt rcParams figure figsize 12 7 n 100 m 100 X np a
  • 在 Xcode 中打开权利会阻止 Bare Bones 应用程序启动

    我在 Xcode 4 2 中创建了一个基本应用程序 非常简单的应用程序 我没有改变任何东西 按下运行 您将获得标准的基本应用程序窗口 如果我打开目标的权利并点击运行 我不会收到任何调试器错误 但窗口永远不会出现 我使用 Console ap
  • 当关联计数更改时强制更新 NSFetchedResultsController

    我有一个 NSFetchedResultsController 它在表视图中显示项目列表 包括关联实体的计数 当为此关联添加对象时 使用 addXXXObject 不会调用回调来通知我的控制器更新 如何接收对象被添加到父实体的 NSSet
  • Java Beans Binding 的状态如何?

    我发现一篇旧文章http www artima com lejava articles beans binding html http www artima com lejava articles beans binding html以及一
  • 针对单个客户端请求并行多个数据库查询

    为了完成用户的某些请求 在我的应用程序中 我从单个方法发出多个数据库查询 但它们当前正在按顺序执行 因此应用程序被阻止 直到它收到前一个查询的响应 数据 然后继续下一个查询 这不是我很喜欢的事情 我想发出并行查询 另外 在发出查询之后 我想
  • 使用 ffmpeg 在同一张图像上使用两次淡入/淡出

    我使用此命令在流开始 5 秒后淡入徽标 并在 25 秒后淡出 如下所示 ffmpeg re i test mp4 ignore loop 0 i logo gif filter complex 1 v fade in st 5 d 1 al
  • 在 QML 中截取特定项目的屏幕截图的方法是什么?

    我知道如何在 QML 中截取整个窗口的屏幕截图 https stackoverflow com questions 33165733 qquickwindowgrabwindow scene graph already in use lq
  • “onclick”不适用于具有 svg-image 的对象元素[重复]

    这个问题在这里已经有答案了 当我使用onclick的属性object html 文档中的元素 它不响应点击 在我的文档中 我有一个 svg 图像并将其存储在object element 因为图像中存在一些动画 仅使用img tag 在下面的