如何在 SVG 中显示占位符图像,直到加载真实图像?

2024-01-07

我正在使用 D3.js 渲染包含光栅图像的节点的图形。

var mainscreenURL = s3_base_url + viewController + "/screenshot.jpeg";
svg.select(".mainScreen").transition().attr("height",0).remove();

svg.append("image").attr("xlink:href", mainscreenURL)
        .attr("width", mainScreenW)
        .attr("height", mainScreenH)
        .attr("x", (w / 2) - (mainScreenW / 2)) 
        .attr("y", (h / 2) - (mainScreenH / 2)) 
        .attr("class", "mainScreen")
        .attr("id", viewController)
}); 

其中一些图像非常大,因此 HTTP 请求(由浏览器隐式发出)可能会花费大量时间。我无法缓存图像,因为它们是动态生成的。

如果这是常规 HTML,我会显示一个占位符图像,然后在成功完成 HTTP get 请求后将其替换为真实图像。但由于这是 SVG,所以没有明确的请求,最终我得到了一个令人讨厌的损坏图像,然后将其替换为真实的图像。

是否有任何事件可以让我知道图像何时完全加载?


参见相关:是否可以监听 SVG 中的图像加载事件? https://stackoverflow.com/questions/11390830/is-it-possible-to-listen-image-load-event-in-svg

我无法获得本地人addEventListener工作方法,但看起来你可以设置onload属性(至少在 Chrome 中有效):

svg.append("image")
    .attr('onload', function() {
         alert('loaded');
    })
    .attr("xlink:href", mainscreenURL);

参见小提琴:http://jsfiddle.net/dKxH9/ http://jsfiddle.net/dKxH9/

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

如何在 SVG 中显示占位符图像,直到加载真实图像? 的相关文章

  • 将 SVG 元素放置在图像上

    是否可以拥有以下元素并设置它们的样式 以便 SVG 对象出现在图像上 即像图像的一部分 目前它们显示在其下方的新行中 我知道我可以将图像设置为父 div 的背景图像 但不幸的是我还需要能够在父级内旋转它 所以我认为这不是一个选项 div s
  • 如何在D3节点中放置图像?

    到目前为止 我已经创建了这些 D3 节点 用于创建可折叠的层次树 到目前为止 这些节点的颜色为 AA1C1C 深红色 以表明如果您单击它们 它们将扩展到更多节点 我想要做的是在节点中使用图像中的位置 这对于所有用户来说都是一个加号 以知道它
  • 使用 classed("active",true) 鼠标悬停时 D3 颜色变化

    我是 js 和 D3 的新手 我已经生成了某种热图 并且想使用 D3 的 on mouseover 更改图块的颜色 我可以显式更改颜色 但想使用 CSS 活动规则 可能是一些简单的东西可以修复 任何帮助将不胜感激 完整代码如下 Thanks
  • 在 X 轴刻度上渲染 HTML

    我想在 D3 图表的 x 轴上渲染 HTML 基本上 我希望轴上的每个标签都是到数据中另一列的超链接 我试过了 x domain data map function d return a href d Name a 但它根本不起作用 我得到
  • 将 SVG 下载为 PNG 图像

    我想将 HTML 页面中的 SVG 元素下载为 PNG 格式 我尝试了此操作 但下载了一个空白的 PNG 图像 如何将我的 HTML SVG 下载为 PNG 我用过这个https bl ocks org biovisualize 81878
  • 如何在 d3.js 中的节点上制作双击事件?

    我想在节点上进行双击事件 所以我尝试了 on dbclick function d return http google com and bind dbclick function d alert hello 但一切都失败了 谁能帮我 完整
  • 如何在 blaze-html 中渲染 blaze-svg 标记

    我想将使用 blaze svg 生成的 svg 图直接包含在使用 blaze html 生成的 html 中 两者都基于 blaze markup 所以我希望它很容易 diagram1 Svg diagram1 try1 Html try1
  • 如何制作一条带有边框的 SVG“线”?

    我有一个小 svg 小部件 其目的是显示角度列表 参见图片 现在 角度是线元素 只有描边 没有填充 但现在我想要一个 内部填充 颜色和周围的 描边 边框 我猜 line 元素无法处理这个问题 那么我应该使用什么来代替呢 请注意 线条笔划的线
  • 如何让d3.js生成svg而不绘制它?

    有没有办法只生成 svg 并将其作为字符串获取 而不实际绘制它 我考虑过将 svg 渲染到隐藏的 div 然后读取内部 html 但是有没有更干净的方法 我认为你可以这样做 var svg d3 select body append svg
  • svg / d3.js 矩形一侧的圆角

    我知道 svg 有一个内置函数可以做圆角 但我只需要在四个角中的 2 个上做圆角 我知道我可以在彼此之上绘制多个矩形来模仿这一点 但这看起来有点俗气 有什么方法可以使用剪辑或任何 d3 js 方法来做到这一点吗 现在我有一个水平条形图 其中
  • D3.js折线图溢出边距

    我有 d3 js 折线图 它作为 angular js 应用程序的指令包含在内 动态添加的线和 xAxis 以及缩放线上的边距溢出 我必须在图的顶部为每条加载的线创建 Ox 轴 并具有 Ox 和 Oy 单独的缩放可能性 Oy 缩放工作正常
  • 直接从 Javascript 代码访问 SVG 文件

    我有这个 HTML 代码 它调用我的 javascript 代码 该代码用于仪表 在 javascript 代码中 我尝试访问 SVG 文件 并修改 仪表的 指针以显示所需的值 该代码运行良好 但是 我不想在 HTML 中调用 对象 id
  • 在 D3 v4 中使用 Zoom.translateExtent 约束地图平移

    我正在尝试显示单个州的地图 并将缩放和平移限制在州的边界内 除了缩放状态路径以适应较小的容器时的平移约束之外 它大部分都在工作 我认为这归结于我不明白该使用什么参数zoom translateExtent 虽然我对此很陌生 所以它可能是别的
  • SVG 元素出现在 DOM 中但在屏幕上不可见

    我尝试使用 SVG 绘制五线谱Vexflow http www vexflow com and 拉斐尔 js http raphaeljs com当我加载页面时 SVG 元素出现在 DOM 中 但它们不会出现在屏幕上 我检查了是否有任何 C
  • nvd3散点图中自定义无数据标签

    我正在尝试使用自定义消息而不是显示的 无可用数据 消息 我正在使用 nvd3 散点图 气泡图 我遇到了一个建议here https stackoverflow com questions 17458236 nvd3 showing empt
  • 渲染时 Flutter SVG 延迟

    我在行中显示 SVG 文件形式的图像和文本 由于某些原因 svg 图像的渲染速度比屏幕的其余部分慢 从而导致延迟 这不利于用户体验 这种延迟正常吗 我该怎么做才能使整个屏幕同时渲染 Row mainAxisAlignment MainAxi
  • D3v6 嵌套图 - 嵌套 join()?

    我想可视化每个节点的 孩子 洞察力 我猜 D3v6 join 函数可以嵌套 不幸的是我找不到任何例子 下面的代码片段包含一个具有 3 个节点和子节点作为属性的outerGraph 到目前为止 这些孩子还没有被使用 相反 innerGraph
  • D3、TS 和 Angular 2

    我正在尝试将 D3 v4 与 Angular 2 Typescript 一起使用 我目前正在研究 D3 v4 我能够遵循 stackoverflow 中类似问题的一些答案 但没有成功 我已经导入了大部分 D3 库及其类型 我使用的是 TS
  • 使用 jspdf 将 Svg 渲染为 Pdf

    我在使用 jspdf 将 svg 元素渲染为 pdf 时遇到问题 我正在使用插件https github com CBiX svgToPdf js https github com CBiX svgToPdf js 去做这个 下面是我的代码
  • D3 地图未渲染澳大利亚 topojson 文件

    我有一个 JSON 文件 d3 地图未渲染我创建的澳大利亚 TopoJSON 文件 相同的代码可以很好地渲染美国地图 浏览器检查器中没有错误 并且两个地图在 geojson io 等在线可视化网站上都呈现良好 我已经提供了 JSON 的链接

随机推荐

  • kubernetes 私有注册表不起作用

    我按照以下链接配置 kubernetes 私有注册表 https github com kubernetes kubernetes tree master cluster addons registry https github com k
  • 错误:与“cc”链接失败:退出代码:1

    我有一个single rs 文件 当我编译它时rustc test1 rs 我收到错误 error linking with cc failed exit code 1 note cc m64 L usr local Cellar rust
  • 如何从页面加载时默认出现的选定文本中删除文本选择?

    当我们刷新或重新加载页面时 单击下面的图像部分 您可以在圆圈中间看到选定的文本 讨论目标和关注点 现金流量分析 税务分析 等等 例子 http ivyfa advisorproducts com financial planning pro
  • 在 where 子句中使用函数的 Oracle 性能

    在存储过程 有一个名为 paramDate 的日期参数 中 我有一个像这样的查询 select id name from customer where period aded to char paramDate mm yyyy Oracle
  • fetchedResultsContainer 核心数据中出现严重应用程序错误

    尝试添加记录时出现以下错误 严重的应用程序错误 例外 在核心数据更改期间被捕获 加工 这通常是一个错误 在观察者之内 NSManagedObjectContextObjectsDidChangeNotification 索引 0 对于 us
  • Android 应用程序中的音频声音太低

    我录制了一些音频文件以在我的应用程序中使用 大约有 50 个 所以我不想再次录制所有音频文件 我最近使用 SoundPool 在真实设备而不是模拟器上播放音频文件 你几乎听不到它们 在模拟器上 我的电脑音量设置为最大 设备音量设置为最大 我
  • 如何在Flexbox中每行显示3个项目?

    我有一个列表 我想显示我的li水平元素 每行 3 个 我一直在努力得到我想要的东西 但没有运气 有解决办法吗 div class serv ul foreach App Http Controllers HomeController get
  • 是否有 Linq 方法可以将单个项目添加到 IEnumerable 中?

    我正在尝试做这样的事情 image Layers 它返回一个IEnumerable对于除Parent层 但在某些情况下 我只想这样做 image Layers With image ParentLayer 因为与通常使用的数百次相比 它只在
  • Git pull:错误:条目 foo 未更新。无法合并

    我正在尝试从远程分支更新我的存储库 并且当我执行 git pull 时不断收到此错误 我没有进行任何本地更改 即使做了 我也不需要保留它们 我试过了 git reset hard 我遇到了同样的问题 似乎唯一有效的方法是删除有问题的文件并再
  • PDO 获取多个插入 ID

    使用 PDO 运行以下查询 实际上 我使用准备好的语句 但有同样的问题 INSERT INTO MyTable MyField VALUES Row1 Row2 如何获取与以下内容相关的记录的 IDRow1 and Row2 db gt l
  • 有 C++ 的在线名称解析器吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我收到了一个相当长且令人困惑的链接错误 如果我可以将其粘贴到某个网站上的某个文本框中并为我提供未损坏的
  • Python:通过向上舍入将列表中的 # 个值分配给 bin

    我想要一个可以接受一系列和一组垃圾箱的函数 并且基本上四舍五入到最近的垃圾箱 例如 my series 1 1 5 2 2 3 2 6 3 def my function my series bins my function my seri
  • Android:DatePicker 无法在 Activity 内工作

    在我的应用程序中 我有一个选项卡栏 我使用 ActivityGroup 将内容加载到每个选项卡中 如下所示 public class FirstGroup extends ActivityGroup Keep this in a stati
  • C++ cin 和 CTRL + Z 问题

    我正在阅读 C Primer 5th 我在练习中遇到了一些问题 从 cin 读取单词序列并将值存储为向量 后 你已经阅读了所有单词 处理向量并将每个单词更改为 大写 打印转换后的元素 一行八个字 我的代码是这样的 include
  • 循环遍历所有表并重命名列

    客户给了我一个遗留数据库old data其中包含一堆表 我将逐步在新系统中激活它们 不幸的是 有几个表包含一个名为hash它与我用来处理这个项目的 Ruby on Rails 不太兼容 有没有办法告诉MySQL控制台中的MySQL 版本8
  • JIT 自动内联的方法的大小是多少?

    我听说 JIT 自动内联小型方法 例如 getter 它们大约有 5 个字节 边界是什么 有 JVM 标志吗 HotSpot JIT 内联策略相当复杂 它涉及许多启发式方法 例如调用方方法大小 被调用方方法大小 IR 节点计数 内联深度 调
  • Zoidberg曲线,无法达到“zoidberg”解

    我正在尝试绘制在Matlab中只是为了好玩 I just copied the equation shown there and defined the sgn and theta functions but I can t achieve
  • 在一次替换调用中替换多个字符

    我需要将 的每个实例替换为空格 并将 的每个实例替换为空 空 var string Please send an information pack to the following address 我试过这个 string replace
  • 解析 XML 命名空间?

    使用 JavaScript Ajax 我正在尝试从中提取值
  • 如何在 SVG 中显示占位符图像,直到加载真实图像?

    我正在使用 D3 js 渲染包含光栅图像的节点的图形 var mainscreenURL s3 base url viewController screenshot jpeg svg select mainScreen transition