2011-02-15 98 views
1

我试图找出一种方法来获取从我的服务器传输到客户端的一些JSON数据,然后使用JavaScript评估客户端。保存数据在图像

现在我用一个简单的XHR调用来重试一个JSON字符串。这工作正常,但问题是它的阻塞。

我想要做的就是开始使用点播的JavaScript加载如下载我的.js文件:

var head = document.getElementsByTagName("head")[0]; 
    script = document.createElement('script'); 
    script.id = 'myScript'; 
    script.type = 'text/javascript'; 
    script.src = "myScript.js"; 
    head.appendChild(script); 

这工作得很好,并没有阻止页面加载休息。

然后在“myScript.js”中我有一个onload函数,当页面加载完成时会触发这个函数。在这个函数中有一个调用服务器来检索JSON字符串。

问题是,因为它是一个onload函数,所以直到页面加载完成才会开始检索此JSON。

所以即时寻找一种方式来开始下载的JSON字符串之前onload事件触发,但没有阻止加载页面。

我的想法是,我想将数据保存到gif serverside中,并开始将其作为页面的一部分下载,然后onLoad我将触发我的函数并使用javascript将gif转换为JSON。

希望它有道理!

回答

1

您可以加载PNG文件并通过javascript和HTML5画布对象读取它。要点是将图像绘制到画布元素上;然后在绘制完成后通过Javascript读取它。这里是我研究的代码(https://github.com/ijoey/datainimage),它将一个JSON对象序列化为一个字符串,将该数据存储到一个数组中,并将其绘制到一个画布元素上。然后,它将它读回来。

这里是我的代码的链接在Github上:https://github.com/ijoey/datainimage/

我开始了与有关如何做到这一点下面的文章: http://blog.nihilogic.dk/2008/05/compression-using-canvas-and-png.html

+0

看起来很有趣 - 我就给你看看。感谢分享这样一个老问题:) – sunebrodersen 2012-04-23 07:20:38

0

不,这没有意义。你的想法就是这样。

  1. 您想将数据保存为gif。好吧,我想这是可能的,通过服务器脚本。
  2. 你想下载作为页面的一部分。好吧,如果它是一个文档资源/资源(你把它作为<img>,或者你通过使用new Image通过JavaScript下载它,可能的话)
  3. onload,函数将会被触发gif将被转换为JSON。您的意思,也许你想通过Base64编码转换为数据URL。
  4. ??
  5. 利润!

我看不清楚你要实现在第4步是什么,你之前继续收获利润

  • gif是否转换为JSON服务器端或客户端?

无论如何,如果你只是希望下载JSON通过XHR不会阻塞页面加载(也许你的意思包括资产),但之后DOM在内存中,你可以使用DOMContentLoaded事件侦听器window。由于XHR默认是异步的(除非您另有说明),其他JavaScript操作应该照常进行。顺便说一下,如果你有澄清,请将其添加到您的问题。有关如何无阻塞地下载JSON的部分,您可以评论这个答案。