问题标签 [revokeobjecturl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
215 浏览

javascript - 在带有背景和内容脚本的 Chrome 扩展程序中,何时可以调用 revokeObjectURL?

我正在使用 XMLHttpRequest 从本地文件系统上传文件。我正在遵循这个 SO 问题中提出的建议 - Pass large blob or file from chrome extension

这是在后台脚本中使用以下代码启动的

随着每个文件的上传,createObjectURL 用于创建一个新的 URL 对象。这些 URL 然后通过消息传递到内容脚本。内容脚本几乎相同,再次在文件上调用 createObjectURL 会产生新的 URL。然后将这些 URL 发送到网页,然后使用它们获取相应的文件。

每次完成此操作时,我都会在后台脚本中有效地创建一组 URL 对象,然后在内容脚本中创建一组新对象。

我应该什么时候调用 revokeObjectURL?

我认为对于在后台脚本中创建的 URL 对象,我只能在内容脚本检索文件并创建新的 URL 对象后调用 revokeObjectURL,对吗?其次,在文件安全上传到网页之前,我无法在内容脚本中创建的 URL 上调用 revokeObjectURL。

如果我是正确的,那么我可以在背景脚本在内容脚本中创建的 URL 上调用 revokeObjectURL 吗?

0 投票
0 回答
362 浏览

reactjs - 视频流:使用 Blob URL,-Video Seek 未找到投射 404 文件

我是视频流服务的开发者/创建者,以便为我正在使用的电影提供服务

Blob Url 被创建并提供给 html5 视频元素

视频呈现后,blob URL 被撤销,以防止用户访问私人电影文件,但是当我尝试通过视频搜索时,我得到一个错误文件未找到的结果。

每次我寻找视频时是否需要重新创建 blob,或者我是否声明我的 blob 错误?

视频播放后:

短视频 SEEK 可以,因为更长的视频 1) 加载时间更长,2 不寻求

0 投票
2 回答
1936 浏览

javascript - Blob createObjectURL 下载在 Chrome 中不起作用

下面的代码在 Chrome 中显示“找不到文件”错误,但相同的代码适用于 chrome 中的其他一些环境,并且在添加了一些时间延迟后它正在工作。
请告知我当地环境所需时间延迟的原因。

0 投票
1 回答
105 浏览

javascript - JavaScript - 检查是否使用了对象 URL

我可以像这样创建一个对象 URL:

我可以像这样撤销对象 URL:

但我想做的是在使用一次后自动撤销 URL。

有没有办法检查对象 URL 是否已被访问?

先感谢您。

编辑:

在这种情况下,我不能只在使用 URL 时触发一个函数。相反,我希望能够检查它是否已在页面之外使用。一个例子是,如果有人在地址栏中键入 URL,这不能调用 javascript AFAIK。

0 投票
0 回答
6 浏览

tags - 薄荷两小时回复

好吧,这不是 hlwhat woz 意外错误!'不知道你是如何重定向到这里的“似乎本发明与堆栈溢出电流无关”

之前“曾经是关于在逐渐变成破碎风车的卷轴上寻求解决方案”</p>

在“另一个愚蠢的问题不应该把这个帐户休眠”之后

--cso--c++------------------------------------o 单元格曾经放了一个衬垫这么久没有绕着电脑连电脑都觉得复杂------------------------------------------ -------------------------------------------------- -------------------------------------------------- ----------------------------------------------标记--- -------------------------------------------------- -----------------------------------------------------------1-- -------------------------------------------------- -------------------------------------------------- 2------------------------------------------------ --------------------------------.NEg //--1,2 <不使用线程;

0 投票
0 回答
23 浏览

javascript - 为什么 Svelte 的 onDestroy 事件没有执行 URL.revokeObjectURL()?

我一直在 svelte-simple-modal 库的帮助下加载模态,我想清理用于加载存储在内存中的图像的变量,该变量以前通过 JSON 从后端获得。

所以我在 Modal.svelte 的标签中有这些重要的东西(使用模态窗口加载的组件):

这就是我在 Modal.svelte 的 HTML 部分中的内容:

onDestroy 事件在模态窗口关闭后发生,我完全确定确实如此,但是当我检查控制台时,我仍然在源部分中列出了多个对象(每次打开模态时都会创建一个对象)。与此相反,我从 chrome://blob-internals/ 获得的对象列表会定期变小,这可能意味着清理工作已正确完成,只是控制台中的源没有刷新,但我真的不确定,特别是因为我看到比较这两个报告的 ID 不同?

0 投票
0 回答
58 浏览

ios - 从外部 url 加载图像并使用 createObjectURL revokeObjectURL 时 iOS 中的内存泄漏

我有一个网络应用程序,它从 zip 文件加载图像,并连续显示它们。
zip 文件可以存储许多图像。
为了防止内存不足,管理内存,方法是在显示下一个图像之前从以前的图像中清除内存。
这是通过以下方式完成的:

  • 缓冲区设置为空。
  • 撤销对象 url 并将 url 设置null。

这种方法适用于各种操作系统,例如Windows、Linux 和 MacOS
但在 iOS 上它失败了

我将问题缩小到从 blob 创建和清理 url。为了简化调试,我删除了 zip 文件的使用,而是从外部 url 加载图像。

为了模仿从 zip 文件加载时的行为,我人为地从 url 获取 blob,通过 createObjectURL 创建对象 url,并通过 revokeObjectURL 清理对象 url

理想情况下,当我清理对象 url 时不应该有任何内存泄漏,但确实存在。
在有限数量的图像之后,加载失败。

问题的一个例子可以在这里看到: https ://jsfiddle.net/avnerm/vd8cwy9g/5/

将变量doDebugMemoryLeakOn_iOS_withRevoke设置为 true,激活命令

一段时间后,这会导致问题。
该程序应该加载约 3000 张图像,但在 iOS 设备上会更早停止(在我的 iPad Pro 上约 400 张图像之后)。

当在各种浏览器(例如Safari、Chrome、Firefox)中播放大约 1000 张图像后,在具有各种iOS版本(iOS 15.2、iOS 14.8.1 )的各种iOS设备(例如iPadiPhone8 )上会发生这种情况。 它也发生在使用WKWebView的原生 iOS 应用程序中。我怀疑WKWebView浏览器引擎 可能存在问题,这是所有这些浏览器共有的。

这是否表明WKWebView中存在错误?
如何解决或解决此问题?

相关问题也发布在Apple 开发论坛中 ,并提交了Webkit 错误

谢谢