如何在javascript中操作和保存浏览器获取的资源

如何在javascript中操作和保存浏览器获取的资源,javascript,html,Javascript,Html,在网络浏览器(最好是谷歌浏览器)中,我们可以使用JavaScript访问和操作各种html媒体元素(如img,video)获取的数据?并使用javascript保存资源或一些数据 我想做这样的事情 var myvideo=document.getElementById("myvideo"); if(window.save(myvideo.data,"myvideo.mp4")){ console.log("video saved successfully."); }else{ conso

在网络浏览器(最好是谷歌浏览器)中,我们可以使用JavaScript访问和操作各种html媒体元素(如
img
video
)获取的数据?并使用javascript保存资源或一些数据

我想做这样的事情

var myvideo=document.getElementById("myvideo");
if(window.save(myvideo.data,"myvideo.mp4")){
  console.log("video saved successfully.");
}else{
  console.log("save operation canceled by user");
}

有没有流行的浏览器能够做到这一点?如何做到?它符合HTML5标准吗?虽然保存是在用户权限下完成的,但在实现上述功能时是否仍存在任何安全问题

--编辑--


谷歌chrome扩展版,就是能够做到这一点的。它将原始媒体数据插入html文件。我错了吗?如果是这样的话,单文件获取原始媒体数据的方法是什么。

您可能可以,但不容易

在网络浏览器(最好是google chrome)中,使用JavaScript我们可以访问和操作各种html媒体元素(如img、视频)获取的数据吗

可以使用Javascript访问和操作DOM元素。这意味着您可以像这样更改图像源:

$( "img" ).attr( "src", "some other url" );
但是,不可能(客户端)访问加载图像的像素并改变其颜色

并使用javascript保存资源或一些数据

这将是一个有点黑客,但我认为是的,是的。在HTML5中,锚定标签有一个
下载
属性。浏览器不会跟随链接,而是会显示资源。要以编程方式保存资源,您必须从Javascript在其链接上触发
单击
。它不会在所有浏览器中都可靠地工作,但是

所以你的算法是这样的:

$( "img" ).attr( "src", "some other url" );
  • 在页面中查找所有媒体元素
  • 在锚标记周围环绕一个带有下载属性的锚标记
  • 一个接一个地模拟单击
  • 看这个

    这对于页面上的一个媒体元素来说很好,但可能会中断更多。“保存”对话框不是浏览器的一部分,而是操作系统的一部分,因此您不会发现用户是否已经保存了某些内容。最好在触发下一次单击之前设置足够长的超时时间

    请注意,此技术适用于HTML5视频/音频,其中媒体源在标记中可见,但不适用于Flash或Silverlight


    我还想指出,此功能更适合在服务器上实现,请参阅。

    您到底想操作什么?@Pekka图像或视频。我将为图像编写一个javascript解码器和一个编码器。啊。这在理论上是可能的,但是浏览器中的JS听起来不像是理想的环境,我问了这个问题,因为我认为它很容易实现,所以应该已经实现了。浏览器应该只允许访问由资源属性指向的字节数据@Pekka我想知道,尽管javscript.thanq提到html5
    download
    属性,但它不可能是理想的环境。我不想访问图像的像素数据,但想访问在http协议中获取的图像数据。“在http协议中获取的图像数据”与页面上显示的图像有何不同?另外,出于安全原因,我非常确定您不能通过Javascript访问原始网络数据。