【发布时间】:2010-11-19 14:20:00
【问题描述】:
这是一个与AJAX, Subdomains and the 200 OK response(和JavaScript Same Origin Policy - How does it apply to different subdomains?)非常相似的问题,但有所不同。我的情况是:
- 域 (www.example.com)
- 子域中的页面 (sd.example.com/cat/id)
- 需要向另一个子域 (cdn.example.com) 发出 ajax 样式请求
与上述问题相反,我要求的是图像。
- GET 图像请求(使用 jQuery $.load())
这似乎工作得很好。因为它工作得很好,当有人指出它在 Firebug 中产生错误时,我并没有立即想到同源策略。
- 图像 ARE 在 localhost 加载(test.sd.example.com/cat/id 的 apache VirtualHost url)
但是,由于我链接的那个问题,现在我想到了它,我担心这在生产中不会可靠地工作。
- 这会继续在生产环境中工作吗?它能否可靠地跨浏览器工作?
答案:不——它只是看起来像它在工作;不是真的
- 如果没有,我该如何解决? (我不认为我可以 JSONP 图像...可以吗?)
答案:继续设置图片的src,等到加载事件触发后才显示。
- 如果是这样,如何停止 Firebug 错误?如果我能。 (他们吓坏了其他开发人员。)
Answer: 同上——去掉实际对图像文件进行 GET 请求的步骤。
初始代码
function(imageUrl, placeTarget){
var i = new Image();
var img = $(i);
img.hide()
.load(imageUrl, function(e){
// console.log("loadImage: loaded");
placeTarget.attr("src", imageUrl);
return true;
})
.error(function(){
// error handling - do this part
// console.log("loadImage: error");
return false;
});
return;
} // loadImage
【问题讨论】:
-
想要获取图像数据而不是使用
的原因是什么?
-
因为该页面有一个幻灯片,其图像的平均总大小为 375kb(但最大为 2mb)。当轮到幻灯片放映时加载图像似乎不是最佳选择。而且,不,没有缩略图。 (所以我可以正常使用
作为拇指,然后在点击时将全尺寸图像加载到 iframe 中)。而且,是的,我认为这很愚蠢。而且,不,我对此无能为力。我想我可以在
标签: ajax image firebug same-origin-policy jquery-load