从内容脚本传递文件对象到后台.js或传递 createObjectURL(并在刷新后保持活动状态)
Pass File object to background.js from content script or pass createObjectURL (and keep alive after refresh)
我的目标是在后台任务中上传一个文件,其中包含来自内容脚本的文件。
我认为不可能将 File 对象直接从内容脚本传递到后台chrome.runtime.sendMessage
因为 JSON 序列化数据。
可以使用 URL.createObjectURL
将字符串 url 传递给文件,这有效。但是 URL 与创建它的窗口中的文档相关联(当前选项卡内容脚本(。如果我刷新,导航离开,关闭选项卡,这些网址将被销毁。
使用 FileReader 读取整个文件并保留在内存中不是一种选择,因为它会使大文件的扩展名崩溃。
问题:
- 让
URL.createObjectURL
活着? - 将文件对象传递到后台?
- 使用内容脚本中的文件在后台任务中上传文件?
- 将文件链接传递到弹出窗口并在那里提交表单,然后在后台运行?
您可以使用
SharedWorker
在内容脚本和后台脚本之间创建通信通道,以允许您传输 DOM 对象,例如 File
s。有关示例,请参阅 chrome.runtime 是否支持发布包含可转移对象的邮件中的代码?
快速测试表明,确实可以将File
发送到后台,但也表明其内部状态已损坏:您可以使用FileReader
读取文件的内容,但无法通过XMLHttpRequest
上传文件。
不过,我找到了一个解决方法:假设您的File
存储在 file
变量中,您可以使用 file.slice(0, file.size)
而不是 file
来获取仍然受文件支持且即使在将其传递到后台后仍可在XMLHttpRequest
中使用Blob
。
相关文章:
- 强制模板刷新ember.js
- 如何通过ajax刷新JSF填充的javascript变量
- 如何解决Yii中的页面刷新问题
- Jquery提交表单而不刷新
- 刷新页面后会出现警报
- 刷新后保留对网页的更改
- 如何在不刷新页面的情况下更新显示框
- 重定向时角度刷新浏览器
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- Javascript,输出结果后页面不断刷新
- $(document).height()在刷新时随机化值(Safari 5.1.10)
- 刷新父窗口后无法关闭窗口
- 刷新页面时hasClass不起作用
- X秒后刷新select元素
- chart.series[id].remove()无法刷新高位图表/高位股票中其他系列的图例属性
- 触发媒体查询断点时刷新页面
- 如何刷新列表框内容onclick或blur事件
- 如何在火狐浏览器中禁用F5和刷新
- 刷新后,setTimeout将工作或不工作
- 刷新导致我的帖子“;张贴“;再一次