- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
今天我花了一些时间尝试使用 D3(和 jQuery)操作 SVG。 我的目标 是能够通过 JavaScript 访问/修改本地 SVG。如果它是为 D3 量身定制的,那将是加分项。
似乎适用于其他人的解决方案不适用于我,它具有以下 JavaScript:
window.onload=function() {
// Get the Object by ID
var a = document.getElementById("svgObject");
// Get the SVG document inside the Object tag
var svgDoc = a.contentDocument;
// Get one of the SVG items by ID;
var svgItem = svgDoc.getElementById("svgItem");
// Set the colour to something else
svgItem.setAttribute("fill", "lime");
};
使用这个 HTML 对象
<object id="svgObject" data="img/svgfile.svg" type="image/svg+xml" height="50" width="50"></object>
和单独的 SVG 文件
<svg height="40px" width="40px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800">
<rect id="svgItem" width="800" height="800" fill="red"></rect>
<circle cx="400" cy="400" r="400" fill="blue"></circle>
</svg>
全部找到 here .它是 this example 中代码的简化版本.我的 JavaScript 代码如下所示,直接来 self 的编辑器:
window.onload = function() {
var checkObject = document.getElementById("checkers");
var checkDoc = checkObject.contentDocument;
var cheese = checkDoc.getElementById('layer1');
console.log(cheese);
};
万一它改变了什么,我的脚本加载在 HTML 正文的底部。下面是我唯一的 HTML 元素。
<object data="check.svg" type="image/svg+xml" width="100" id="checkers"></object>
和我的 SVG 文件(只是一个灰色勾选,请随意使用)。
<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<g id="layer1" transform="translate(0,-952.36217)">
<path id="rawCheck" fill="#dbdbdb" d="m18.75,1004.5,21.607,21.607,40.893-40.893-7.8571-7.8572-33.036,33.036-13.75-14.107z" stroke-opacity="0"/>
</g>
</svg>
我的问题是在 checkObject
上调用 .contentDocument
,应该只是调用 .contentDocument
object
元素,但我弄得一团糟:
Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLObjectElement': Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match.
除了它都是愤怒的红色。这让我感到困惑,因为据我所知,我的代码非常接近工作示例的副本,但我在这里。
我也试过在this question 中看到的d3.xml()
的回答并收到以下错误
XMLHttpRequest cannot load file:///home/user/Documents/examples/d3/check.svg. Cross origin requests are only supported for HTTP.
还有
Uncaught NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'file:///home/user/Documents/examples/d3/check.svg'
如果您想查看有关我的 d3.xml()
尝试的更多详细信息,我很乐意更新这个问题,我只是认为已经有很多代码块了。
最佳答案
在 Chrome 中,当通过文件系统(即 URL 具有 file://
协议(protocol))打开页面时,无法通过 JavaScript 访问外部 SVG 的内容。
要解决这个问题,您可以通过本地服务器打开它。或者,您可以 disable the Same-Origin Policy web security feature使用 --disable-web-security
命令行参数进行测试。 Firefox 也没有这个限制,所以也有这个选项。
关于javascript - 从 Javascript 访问 SVG 对象时收到 Uncaught SecurityError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24644657/
执行 ruby -e 'Thread.new {$SAFE=3; File.read "/tmp/foo"}.join' 结果 -e:1:in `read': Insecure operation:
我是greasemonkey 的新手,并试图了解greasemonkey 与嵌入式Web 控制台有何不同。一个在 Web 控制台上完美运行的简单脚本在 Greasemonkey 上不起作用,我不知道为
我在 android webview 中遇到以下错误 I/chromium: [INFO:CONSOLE(1)] “未捕获的安全错误:阻止了具有来源的帧” https://xxxxxxxxxx.com
我目前正在使用 Chrome 74 并尝试使用 Cypress 在我的应用程序中测试样式指南。当我加载 Cypress 时,它会抛出这个错误: SecurityError: Blocked a fra
我正在测试一个 react HOC,它检查本地存储中是否存在 token 。如果存在,它将用户重定向到 Home 组件,否则用户将被重定向到 Login 组件。 但是,我在上次测试调用 compone
当我以下一种方式将历史记录推送到浏览器时: window.history.pushState( { some_safe_data: data
我有两个 iframe。这些 iframe 通过 postMessage 进行通信。 在一个 iframe 中,如果我执行以下操作,它将不起作用。 // Broadcast to all iframe
我尝试使用DataTransfer.mozSetDataAt() jsfiddle 中的方法 script它抛出 SecurityError: The operation is insecure. 这
我们有一个利用 facebook javascript sdk 和登录功能的应用程序。 我们一直注意到我们的生产日志中出现了这个错误。专门针对 10.3 及更高版本的 iOS 设备。似乎也只针对 sa
我的 Cordova 应用程序在 Android 设备上运行时出现以下错误: Uncaught SecurityError: Failed to execute 'open' on 'XMLHttpR
当从网络加载内容时,这种情况在很多情况下都会发生,但对我们来说,最常见的是通过 Facebook 的图形快捷调用加载图像。 像这样简单的事情: package { import flash.d
错误是 SecurityError: DOM Exception 18 并且它发生在 replaceState@ https://connect.facebook.net/en_US/fbds.js第
我有一个呈现不同大小主体的 iframe 的父页面。但是,当在没有 www 的情况下导航到该站点时,您会收到以下错误: 599 未捕获的安全错误:阻止了来源为“http://example.com”的
我使用 HTML 和 JQuery mobile 进行phonegap,但是当我使用此代码测试它时,它显示错误 SecurityError: 该操作不安全。 换页功能运行良好,为什么会发生这种情况?
我正在尝试使用 HTML5 引入一个图像文件,将其绘制到 Canvas 上,对其进行一些操作,然后返回数据 URL,以便我可以引用这个新生成的图像。 这是一个简单的图像加载代码示例: You
我们有一个代码,每次打开应用程序时都会创建多个 websocket 实例。 privateMembers.webSocket = new WebSocket(url, protocol); 其中 ur
(这个问题与发现的 JS-XSL 演示有关 here ) 简单介绍一下这个演示的用途;它以 MS Excel 文件作为输入,解析数据,并以纯文本格式输出数据。我下载了该包 (zip) 并在本地运行它,
我已经为通过 iframe 嵌入到报告中的 SAP 解决方案(无论什么)制作了一个组件。在 SAP 平台 (BO) 上部署报告后,出现此错误(在 Chrome 上,但在 IE 或 FF 上也不起作用)
所以我的问题与Firefox SecurityError: "The operation is insecure." 有点相关.上传图像适用于除 Firefox Android App 之外的所有浏览
我正在尝试将数据插入本地数据库。当我打开数据库时,它给了我这个错误。我搜索了一下,发现肯定是在try catch block 中。我做到了,但还是同样的问题。 var APP_ID = "C44F83
我是一名优秀的程序员,十分优秀!