SVG 错误:访问属性“someFunction”的权限被拒绝

2023-12-22

请看一下这个小提琴:http://jsfiddle.net/arasbm/Tyxea/14/ http://jsfiddle.net/arasbm/Tyxea/14/

正如你所看到的,我想在 SVG 元素上触发事件时对其进行转换。您可以单击箭头,它应该可以工作,因为它使用嵌入 SVG 范围内的 JavaScript 代码:

<svg id="my-svg" width="20cm" height="20cm" viewBox="0 0 600 600"
     xmlns="http://www.w3.org/2000/svg" version="1.1">
  <desc>Example showing how to transform svg elements 
        using SVGTransform objects</desc>
  <script type="application/ecmascript"> <![CDATA[
    function transformMe(evt) {
      // svg root element to access the createSVGTransform() function
      var svgroot = evt.target.parentNode;

      // SVGTransformList of the element that has been clicked on
      var tfmList = evt.target.transform.baseVal;

      // Create a seperate transform object for each transform
      var translate = svgroot.createSVGTransform();
      translate.setTranslate(50,5);

      var rotate = svgroot.createSVGTransform();
      rotate.setRotate(10,0,0);

      var scale = svgroot.createSVGTransform();
      scale.setScale(0.8,0.8);

      // apply the transformations by appending the SVGTranform objects 
      // to the SVGTransformList associated with the element
      tfmList.appendItem(translate);
      tfmList.appendItem(rotate);
      tfmList.appendItem(scale);
    }
  ]]> </script>

  <polygon fill="orange" stroke="black" 
    stroke-width="5" 
    points="100,225 100,115 130,115 70,15 70,15 10,115 40,115 40,225"
    onclick="transformMe(evt)"/>
  ...
</svg>

这可行,但我希望将我的 JavaScript 代码与SVG元素。根据这个 W3C 文档 http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html#scripting_HTML我应该能够通过使用引用来调用 javascript 函数top范围。这就是我对矩形所做的:

  <rect x="200" y="100" width="100" height="100" 
    fill="yellow" stroke="black" stroke-width="5"  
    onclick="top.transformMe(evt)"/>

但是,单击矩形会在控制台中出现以下错误:

  Error: Permission denied to access property 'transformMe' @ http://fiddle.jshell.net/arasbm/Tyxea/14/show/:1

有人可以告诉我如何解决这个问题。本例中演示的真正问题是:使用这些元素之外的 JavaScript 代码处理 SVG 元素上的事件的正确方法是什么?


小提琴代码中的问题是 JSFiddle 安排代码的方式。

首先,Javascript 在函数体中进行计算,因此您的方法 TransformMe 不会成为全局函数。添加

window.transformMe = transformMe 

放在 Javascript 的末尾,以便该函数成为全局函数。

然后,再次在 fiddle 中,代码在 iframe 中运行(也许您的页面不同),“top”指的是顶部文档,在 jsfiddle.net 的情况下,您因此尝试进行跨域 JS 调用。如果您在打开开发人员工具的情况下运行小提琴,您可以看到这一点:控制台给出了正确的提示。

最后但并非最不重要的一点是,在当前的浏览器实现中,我认为您根本不需要“顶部”引用。相反,您可以简单地调用全局函数(刚刚使用 IE、Chrome 和 FF 进行了测试)这对我有用 http://jsfiddle.net/Tyxea/16/).

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

SVG 错误:访问属性“someFunction”的权限被拒绝 的相关文章

随机推荐

  • Android 中透明背景的对话框

    如何从 Android 对话框中删除黑色背景 图片显示了问题所在 final Dialog dialog new Dialog Screen1 this dialog requestWindowFeature Window FEATURE
  • Java-泽西岛、JAX RS

    我有一些开发 Java 程序的经验 然而 我一直很难理解一些基础知识 例如构成 Java 企业应用程序的所有不同组件 例如 我已经实现了从 J2ME 应用程序使用的基于 RESTful 和 SOAP 的 Web 服务 并为我的 MSC 执行
  • 从 Java 访问元组的奇怪行为

    我正在寻找关于我在 Java 访问在 Scala 中创建的元组中发现的非常奇怪的行为的解释和 或版本控制详细信息 如果可能 我将通过我所做的简单测试来展示奇怪的行为 我创建了这个 Scala 类 class Foo def intsNull
  • 在 SQLAlchemy 中插入时处理重复的主键(声明式风格)

    我的应用程序使用范围会话和 SQLALchemy 的声明式风格 这是一个网络应用程序 许多数据库插入都是由Celery 任务调度程序 通常 当决定插入对象时 我的代码可能会执行以下操作 from schema import Session
  • NSTask 启动路径不可访问。在 Xcode 中工作。 XCode 显示错误

    好的 关于堆栈溢出有几个与此相关的问题 这是唯一的问题 https stackoverflow com questions 8254680 nstask only returning standarderror in release bui
  • 谷歌数据流防火墙规则/网络标记

    我正在尝试从谷歌数据流批处理连接到cassandra 具有防火墙规则标签 此外数据流服务将创建带有 数据流 标记的工作人员 是否可以更改默认标签 或者添加更多标签 我认为目前无法更改数据流服务创建虚拟机所用的标签 但是 可以通过指定参数来控
  • 访问子表单数据表仅返回 1 个结果

    我知道这个问题已经以某种形式或方式被多次提出 但我无法找到有效的解决方案 这让我发疯 我正在 Access 中创建一个搜索表单 该表单通过 VBA 执行选择查询来查找表中的数据 到目前为止 这非常简单 查询有效 并且表单返回结果 问题是我正
  • Jenkins 管道可以有可选的输入步骤吗?

    是否可以创建带有可选输入阶段的 Jenkins 管道 下面的代码片段没有实现这个目标 预期行为 该阶段 以及输入提示 应该仅针对特定分支运行 实际行为 此阶段适用于所有分支机构 使用输入步骤时 when 过滤器将被忽略 stage Appr
  • 如何在OPenCV中计算32位浮点图像的图像直方图

    我想计算图像像素类型为 32F 32 位浮点 的直方图 calcHist 函数的参数值应该是什么 变暗 垃圾箱 范围 嗯 我已经这样做过很多次了 像这样 cv Mat matSrc this is a CV 32FC1 normalised
  • TFS项目可以互相引用吗?

    我最近开始在一个企业软件环境中工作 其中有数百个不同的应用程序 所有这些应用程序都局限于自己的 孤岛 我的任务之一是尝试将事情标准化一点 第一个尝试将是标准事件日志记录 目前 该公司的 标准 是 每个人都应该使用企业库进行日志记录 这实际上
  • z-index 在 ipad 上不能很好地工作

    我正在为朋友建立一个网站 http pasionesargentas com sm http pasionesargentas com sm 与带缩略图翻转的全屏图库 http tympanus net codrops 2011 02 09
  • css div高度100%问题?

    我想要一个 div 占据所有屏幕高度 这就是为什么我找到以下链接 http www webmasterworld com forum83 200 htm http www webmasterworld com forum83 200 htm
  • 重用PreparedStatement中的参数?

    我将一个参数传递给一个PreparedStatement 如下所示 public void getNodes String runId File file Connection conn PreparedStatement ps null
  • 我可以在 QNX 上使用 Java 吗?

    我必须侍奉两个主人 一个项目预计在 v1 0 后将一分为二 它最初是一个使用 FreeRTOS 用 C 语言编码的简单嵌入式项目 直到 v1 0 为止 后来 一位大师说我们必须使用QNX来取悦合作伙伴 否则就会失去交易 而另一位大师则说我们
  • 在 rmarkdown 中创建模板

    我正在尝试创建自定义模板 但它不会显示 我已经尝试跟随https bookdown org yihui rmarkdown template struct html https bookdown org yihui rmarkdown te
  • Power Query 为空时上移值

    目前 我在 Excel 中有一个大表 我想将其与动态下拉列表 级联选项 一起使用 根据您在第一个下拉菜单中所做的选择 然后在下一个单元格中 您应该有一个经过筛选的下拉菜单 此外 任何选项对于所选的主类别都是唯一的 我做的第一件事是获取我需要
  • fsock:无法找到套接字传输“http”

    我想用 fsock 发送后变量 但是当我尝试这个时 post arr array a gt b addr http 1 2 3 4 confirmation html fp fsockopen addr 80 errno errstr 30
  • 使用 CloudFormation 添加对 AWS websocket API 的集成响应

    AWS recently released Cloudformation support for templating websocket API gateways https aws amazon com about aws whats
  • JFreechart 中漂亮的饼图

    是否有可能在 JFreechart 中为饼图获得复杂 漂亮的颜色 我的意思是我怎样才能获得如图所示的颜色link http upload wikimedia org wikipedia commons b bf Ml wiki photo
  • SVG 错误:访问属性“someFunction”的权限被拒绝

    请看一下这个小提琴 http jsfiddle net arasbm Tyxea 14 http jsfiddle net arasbm Tyxea 14 正如你所看到的 我想在 SVG 元素上触发事件时对其进行转换 您可以单击箭头 它应该