相关疑难解决方法(0)

不同浏览器中URL的最大长度是多少?

不同浏览器中URL的最大长度是多少?浏览器有什么不同?

HTTP协议是否要求它?

browser url http

4676
推荐指数
18
解决办法
119万
查看次数

有没有办法在使用数据时指定建议的文件名:URI?

例如,如果您点击链接:

data:application/octet-stream;base64,SGVsbG8=

浏览器将提示您下载一个文件,该文件由超链接本身中作为base64保存的数据组成.有没有办法在标记中建议默认名称?如果没有,是否有JavaScript解决方案?

html javascript url save-as data-uri

216
推荐指数
10
解决办法
16万
查看次数

<iframe>中srcdoc ="..."和src ="data:text/html,..."之间的区别是什么?

例如,这些之间的区别是:

<iframe srcdoc="<p>Some HTML</p>"></iframe>
<iframe src="data:text/html,<p>Some HTML</p>"></iframe>
Run Code Online (Sandbox Code Playgroud)

演示

而且,如果它们完全相同,为什么HTML5会添加srcdoc属性?

编辑

也许我不够清楚.我不是比较srcsrcdoc,但src使用text/html的数据URI用srcdoc.

然后,如果功能图是这样的

                   |  src attribute       |  srcdoc attribute
 --------------------------------------------------------------------
  URL              |  Yes                 |  No without using src (*)
  HTML content     |  Yes, using data URI |  Yes

为什么srcdoc需要?


(*)注意:

它似乎srcdoc可以用来通过URL(Demo)加载页面,使用带有src属性的子图:

<iframe srcdoc="<iframe src='http://microsoft.com'></iframe>"></iframe>
Run Code Online (Sandbox Code Playgroud)

html iframe

64
推荐指数
6
解决办法
4万
查看次数

数据uri太大时"Aw,Snap"

我正在写一个chrome扩展,它执行以下操作:

  1. 使用将文件从网站下载到内存 XMLHttpRequest
  2. 向文件添加其他数据,然后base64将结果编码为变量 total_encoded_data
  3. 使用提供数据给用户<a href=data:application/octet-stream;charset=utf-8;base64,' + total_encoded_data+' download='file.bin'>Click to Download</a>.当total_encoded_data添加使用jQuery HREF.

我通过手动二进制搜索发现,如果大小total_encoded_data超过2097100个字符,那么当我点击链接时,我会收到一条Aw,Snap消息.如果尺寸较小,那么我可以按预期下载.

除了测试文件大小之外,我还用来atoi确保base64编码有效,并且它运行时没有错误.

Aw,Snap消息不会产生任何崩溃报告,chrome://crashes也不会产生任何意外输出chrome_debug.log

在提供base64编码的字符串长度大于2097100的数据uri时,如何避免Aw,Snap消息?

javascript google-chrome-extension data-uri

40
推荐指数
1
解决办法
1万
查看次数

Base64 DataURL图像的大小限制是多少?

我想知道在浏览器中加载的Base64 DataURL图像的最大长度是多少?

谢谢!

javascript html5 base64 web

36
推荐指数
2
解决办法
3万
查看次数

如何使用移动Safari下载客户端数据?

我知道SO上已经存在很多与此类问题相关的问题,例如:

这个问题非常适用于iOS 8.1.3上的Safari(移动版,iPad 2+).我们有一个使用Application CacheIndexedDB的离线AngularJS Web应用程序来存储数据.一种数据是可以相对较大的PDF文档:最大约25兆字节.我们将这些文件存储在IndexedDB中,当用户想要下载它时,我们在浏览器中使用JavaScript将该文件存储在内存中.

当用户想要保存它时,问题就出现了.Safari Mobile可能会因数据URI的大小限制或其他原因而崩溃.

this.save = function (file) {
    var mediaType = "application/pdf";

    var link = document.createElement("a");
    var blob = new Blob([this.fromBase64ToBinary(file.content)], { type: mediaType });

    var blobUrl = URL.createObjectURL(blob);
    document.body.appendChild(link);
    link.download = file.name;
    link.href = blobUrl;
    link.click();
    document.body.removeChild(link);
};
Run Code Online (Sandbox Code Playgroud)

在服务中,我们有一个函数save(file),其中file包含两个属性的对象:

  1. name:文件名;
  2. content:文件的数据,基本64编码,然后我们将其转换为二进制.

atob()功能可以是原因?当我在运行此代码的iPad上进行逐步调试时,它会在那里崩溃(即:与行对齐var byteCharacters = atob(b64Data);).

this.fromBase64ToBinary = function (base64) …
Run Code Online (Sandbox Code Playgroud)

javascript html5 download mobile-safari

25
推荐指数
1
解决办法
1840
查看次数

Javascript:将存储为Uint8Array的PNG渲染到没有数据URI的Canvas元素上

我正在尝试渲染存储在javascript中的PNG图像Uint8Array.我最初尝试的代码如下:

var imgByteStr = String.fromCharCode.apply(null, this.imgBytes);

var pageImg = new Image();
pageImg.onload = function(e) {

    // Draw onto the canvas
    canvasContext.drawImage(pageImg, 0, 0);

};

// Attempt to generate the Data URI from the binary
// 3rd-party library adds toBase64() as a string function
pageImg.src="data:image/png;base64,"+encodeURIComponent(imgByteStr.toBase64());
Run Code Online (Sandbox Code Playgroud)

但是,我发现由于某种原因,onload函数从未运行(我在chrome中设置了断点并且它根本就没有命中).我发现如果我将src设置为URL而不是数据URI,它可以正常工作.但是,由于一些限制,我不能直接引用图像的URL,即它必须从中加载UInt8Array.

此外,为了使事情略微复杂化,这些图像的大小可能是兆字节.根据我的阅读,尝试将数据URI用于非常大的图像存在兼容性问题.因此,我对使用它们非常犹豫.

因此,问题是如何在不使用数据URI或直接引用图像URL的情况下将此字节数组作为PNG渲染到画布上下文中?


我也尝试使用类似下面的东西直接使用该putImageData函数操作图像数据.请记住,我并不是100%了解此功能的工作原理

var imgdata = canvasContext.createImageData(this.baseHeight, this.baseWidth);
var imgdatalen = imgdata.data.length;
for(var i=0; i<imgdatalen; i++) {
    imgdata.data[i] = _this.imgBytes[i];
}
canvasContext.putImageData(imgdata, 0, 0);
Run Code Online (Sandbox Code Playgroud)

它是从一个我已经关闭的标签的博客中解除的,所以对没有给予适当信用的灵感表示道歉.


此外,在慢慢锤击这件事的同时,我在Chrome中遇到了错误SECURITY_ERR: DOM …

javascript html5-canvas

21
推荐指数
3
解决办法
2万
查看次数

JavaScript Max Blob大小是否有任何限制

我正在尝试使用AJAX调用下载文件.我需要使用AJAX调用,因为我必须发出一个帖子请求以及我需要从客户端发送一些标题.由于Server API不在我们的控制之下,除了使用AJAX之外,我们没有太多选择.为了显示文件保存对话框,我将字节数组转换为blob到Object URL,如下所示

var oReq = new XMLHttpRequest();
oReq.open("POST","api/operations/zip", true);
oReq.responseType = "arraybuffer";
oReq.onload = function(oEvent) { 
   var blob=new Blob([oReq.response], {type: 'application/octet-binary'}); 
   var link=document.createElement('a'); 
   link.href=window.URL.createObjectURL(blob); 
   link.download="myFileName.zip"; link.click();  
}
oReq.send(filePaths);
Run Code Online (Sandbox Code Playgroud)

现在我想知道除了浏览器内存限制之外,我们可以在JavaScript中使用Blob大小限制.如果我有大约8 GB RAM,可以下载4 GB文件.

javascript ajax blob download

18
推荐指数
2
解决办法
2万
查看次数

如何保存动态更改(byjquery)html DOM?

我使用jquery动态表单获得了一些不错的布局生成器,并且jquery ui功能可以更改已使用元素的数量,它们的css属性等.一切看起来都很棒但是当前结果的呈现存在一个问题.我想保存生成的html DOM并以某种方式解析它(从DOM树中删除隐藏的元素等).任何想法如何保存当前(修改)的html + css?

html jquery dom

14
推荐指数
2
解决办法
9670
查看次数

在谷歌浏览器上下载大文件(最大15 MB)的问题

我在Google Chrome中遇到了下载问题.我使用的是Ruby 2.2,Rails 4.2,AngularJS 1.2.

我们这里没有数据库.我们通过API获得的一切.我们试图下载的文件大约是7 MB.它给我们"失败:网络错误".虽然它在Firefox上运行良好.

从API我们获得JSON中的二进制数据.我们正在解析它.然后:

send_data response_fields["attachment"], type: response_fields["mimeType"], disposition: 'attachment', filename: params[:filename]
Run Code Online (Sandbox Code Playgroud)

当我们使用AngularJS时,我们在AngularJS Controller中捕获该值,然后将其转换为:

var str = data;
var uri = "data:" + mimeType + ";base64," + str;

var downloadLink = document.createElement("a");
downloadLink.href = uri;
downloadLink.download = filename;
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
Run Code Online (Sandbox Code Playgroud)

这适用于Firefox甚至Chrome,适用于较小的文件大小.不知道为什么它会在Chrome上为更大的尺寸提供错误.

有什么建议?

谢谢.

javascript google-chrome angularjs ruby-on-rails-4

12
推荐指数
1
解决办法
7489
查看次数