在下面的JS中,.done函数在FF,Chrome和Opera中启动,但是在IE 10及更低版本中它不会消失。它的想法是从URL中获取唯一标识符将允许代码决定从Flickr帐户中抓取哪些photoset并显示在滑块中以便稍后在iFrame中使用。然而,当谈到IE10和更低时,.done似乎完全被跳过了。任何低于.getJSON调用的内容都会被忽略。
$(window).load(function() {
var pathname = window.location.pathname;
var photoSetId = ['72157638321110124','72157638320688146','72157638320892573','72157638320142195', '72157638319052975'];
var setNum = window.location.href.split('?')[1];
var user = '110468775@N05';
var apiKey = 'fa3bd9c48f711aef070622ba60014b21';
var photoset = photoSetId[setNum];
var flickr = 'http://api.flickr.com/services/rest/';
$.getJSON( flickr, {
method: "flickr.photosets.getPhotos",
nojsoncallback: 1,
extras: "original_format",
api_key: apiKey,
photoset_id: photoset,
privacy_filter: '1',
format: 'json'
})
.done(function(data) {
console.log(data);
$.each( data.photoset.photo, function(i, item ) {
var url = 'http://farm' + item.farm + '.staticflickr.com/' + item.server + '/' + item.id + '_' + item.originalsecret + '_o.jpg';
var $li = $("<li>");
var $img = $("<img>").attr('src', url);
$img.appendTo($li);
$li.appendTo('.bjqs');
});
$('#slider').bjqs({
'height': 360,
'width': 640,
'showcontrols': true,
'centercontrols': true,
'showmarkers': false
});
});
});
答案 0 :(得分:1)
它在IE以外的所有浏览器中都有效,因为IE以外的所有浏览器都支持使用XmlHTTPRequest对象的CORS,而IE需要在IE11之前使用XDomainRequest对象。
要解决此问题,请通过删除nojsoncallback参数来交换使用jsonp,然后将jsoncallback参数添加到flickr url中,以便jquery知道将flickr api的回调名称放在何处。
var flickr = 'http://api.flickr.com/services/rest/?jsoncallback=?';
$.getJSON( flickr, {
method: "flickr.photosets.getPhotos",
//nojsoncallback: 1,
extras: "original_format",
api_key: apiKey,
photoset_id: photoset,
privacy_filter: '1',
format: 'json'
})