随着firebugs网络标签打开我说放大和缩小谷歌地图,我发现它要求png图像。
好的,我理解我们可以使用Ajax请求图像。可是等等 ?我总是习惯请求html,jsox,txt和xml。形象........对我来说很奇怪?有人可以详细说明一下吗?
此外,我想知道是否下载了文本,我们将其添加到某个DOM元素并显示出来。如何从ajax重试图像?
任何帮助或指针都会有很大帮助:)
答案 0 :(得分:1)
GMaps不会使XMLHttpRequests获取图像。他们改为使用通过javascript注入的普通<img />
元素。
然后他们使用“onload”和“onerror”事件来检测图像是否正确加载。
如果图像超时,他们会重试下载图像。这可以通过设置一个计时器来实现,一旦它到期,重新设置图像的src属性。
var tile = document.createElement('img');
var url = 'http://sometilehost/X.Y.Z.png';
var downloadTimeout = 10000; // Retry in 10 seconds
// Tile downloaded successfully
tile.onload = function (e) {
window.clearTimeout(tile.downloadTimer);
alert('tile downloaded');
};
// The tile couldn't be downloaded. 404, 503 ...
tile.onerror = function (e) {
window.clearTimeout(tile.downloadTimer);
alert('tile not downloaded');
};
// This will fire if the tile doesn't download in time
tile.downloadTimer = window.setTimeout(function () {
tile.src = url; // Start the download again
}, downloadTimeout);
tile.src = url;