相关疑难解决方法(0)

使用来自ajax请求的原始图像数据来获取数据URI

我正在尝试使用Ajax和数据URI的组合来加载JPEG图像并使用单个HTTP请求提取其EXIF数据.我正在修改一个库(https://github.com/kennydude/photosphere)来做这件事; 目前,此库使用两个HTTP请求来设置图像源并获取EXIF数据.

获得EXIF工作,没问题.但是,我很难将ajax请求中的原始数据用作图像的源.

对该技术进行小规模测试的源代码:

<!DOCTYPE html>
<html>
<head>
<script type='text/javascript'>

function init()
{
    // own ajax library - using it to request a test jpg image
    new Ajax().sendRequest
    (
        "/images/photos/badger.jpg",
         { method : "GET",
            callback: function(xmlHTTP)
            {

                var encoded = btoa (unescape(encodeURIComponent(xmlHTTP.responseText)));
                var dataURL="data:image/jpeg;base64,"+encoded;

                document.getElementById("image").src = dataURL;
            }
        }
    );
}

</script>
<script type="text/javascript" src="http://www.free-map.org.uk/0.6/js/lib/Ajax.js"></script>
</head>
<body onload='init()'>
<img id="image" alt="data url loaded image" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我得到了看起来像发回的合理的jpeg数据,原始数据的长度(以字节为单位)和base64编码然后未编码的原始数据是相同的.但是,在Firefox(25)和Chrome(31)(当前版本)上设置图像src的尝试失败 - chrome显示"损坏的图像"图标,表明src是无效格式.

我使用这个mozilla页面获取有关base64编码/解码的信息:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Base64_encoding_and_decoding

知道什么可能是错的吗?环顾四周我可以创建base64编码的图像服务器端,但它可以像这样在客户端完成吗?首先,base64编码服务器端显然增加了数据大小,本练习的目的是减少从服务器传输的数据量以及请求数.

谢谢,尼克

javascript ajax base64 image

36
推荐指数
4
解决办法
5万
查看次数

突然禁止设置XMLHttpRequest.responseType?

我一直在使用同步XMLHttpRequest,其responseType设置为"arraybuffer"很长一段时间来加载二进制文件并等到它被加载.今天,我收到了这个错误:"Die Verwendung des responseType-Attributes von XMLHttpRequest wird im synchronen Modus im window-Kontekt nichtmehrunterstützt." 大致转换为"不再支持在窗口上下文(?)中以同步模式使用XMLHttpRequest的responseType."

有谁知道如何解决这一问题?我真的不想对这样的事情使用异步请求.

var xhr = new XMLHttpRequest();
xhr.open('GET', url, false);
xhr.responseType = 'arraybuffer';
Run Code Online (Sandbox Code Playgroud)

镀铬工作正常.

javascript ajax firefox xmlhttprequest

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

如何同步加载图像?

我想创建一个具有图像属性的对象,但我希望contstructor只在加载图像后才能完成运行.或者用代码来描述:

GraphicObject = Class.extend({

    //This is the constructor
    init: function(){
          this.graphic = new Image();
          this.graphic.src = 'path/to/file.png';

          while(true)
          {
              this.graphic.onload = function(){break;};
              //I know this won't work since the 'break' is on a different context
              //but you got what I try to do.
          }
     }


})
Run Code Online (Sandbox Code Playgroud)

对于那些不熟悉我在脚本中使用的Class符号的人来说,它基于

有任何想法吗?

javascript html5

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

如何阻止用户打印网页?使用javascript或jquery

我们如何阻止用户使用不同的方法打印网页?

  1. 禁用右键单击
  2. 禁用CtrlP组合键
  3. 右键单击 - >打印

有没有办法停止打印网页?

我们可以使用javascript处理这3个事件吗?或者我们可以说.如果用户将执行任何这些事件.然后我想运行我的其他代码.这可能吗?

javascript css jquery

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

标签 统计

javascript ×4

ajax ×2

base64 ×1

css ×1

firefox ×1

html5 ×1

image ×1

jquery ×1

xmlhttprequest ×1