⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flickrstore.js

📁 这是一个ajax的例子大家好好的看看就是一个鱼眼的效果
💻 JS
字号:
if(!dojo._hasResource["dojox.data.FlickrStore"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.data.FlickrStore"] = true;dojo.provide("dojox.data.FlickrStore");dojo.require("dojo.data.util.simpleFetch");dojo.require("dojo.io.script");dojo.require("dojo.date.stamp");dojo.declare("dojox.data.FlickrStore", null, {	constructor: function(/*Object*/args){		//	summary:		//		Initializer for the FlickrStore store.  		//	description:		//		The FlickrStore is a Datastore interface to one of the basic services		//		of the Flickr service, the public photo feed.  This does not provide		//		access to all the services of Flickr.		//		This store cannot do * and ? filtering as the flickr service 		//		provides no interface for wildcards.		if(args && args.label){			this.label = args.label;		}	},	_flickrUrl: "http://api.flickr.com/services/feeds/photos_public.gne",	_storeRef: "_S",	label: "title",	_assertIsItem: function(/* item */ item){		//	summary:		//      This function tests whether the item passed in is indeed an item in the store.		//	item: 		//		The item to test for being contained by the store.		if(!this.isItem(item)){ 			throw new Error("dojox.data.FlickrStore: a function was passed an item argument that was not an item");		}	},	_assertIsAttribute: function(/* attribute-name-string */ attribute){		//	summary:		//		This function tests whether the item passed in is indeed a valid 'attribute' like type for the store.		//	attribute: 		//		The attribute to test for being contained by the store.		if(typeof attribute !== "string"){ 			throw new Error("dojox.data.FlickrStore: a function was passed an attribute argument that was not an attribute name string");		}	},	getFeatures: function(){		//	summary: 		//      See dojo.data.api.Read.getFeatures()		return {			'dojo.data.api.Read': true		};	},	getValue: function(item, attribute){		//	summary: 		//      See dojo.data.api.Read.getValue()		var values = this.getValues(item, attribute);		if(values){			return values[0];		}		return undefined;	},	getAttributes: function(item){		//	summary: 		//      See dojo.data.api.Read.getAttributes()		return ["title", "description", "author", "datePublished", "dateTaken", "imageUrl", "imageUrlSmall", "imageUrlMedium", "tags", "link"]; 	},	hasAttribute: function(item, attribute){		//	summary: 		//      See dojo.data.api.Read.hasAttributes()		if(this.getValue(item,attribute)){			return true;		}		return false;	},	isItemLoaded: function(item){		 //	summary: 		 //      See dojo.data.api.Read.isItemLoaded()		 return this.isItem(item);	},	loadItem: function(keywordArgs){		//	summary: 		//      See dojo.data.api.Read.loadItem()	},	getLabel: function(item){		//	summary: 		//      See dojo.data.api.Read.getLabel()		return this.getValue(item,this.label);	},		getLabelAttributes: function(item){		//	summary: 		//      See dojo.data.api.Read.getLabelAttributes()		return [this.label];	},	containsValue: function(item, attribute, value){		//	summary: 		//      See dojo.data.api.Read.containsValue()		var values = this.getValues(item,attribute);		for(var i = 0; i < values.length; i++){			if(values[i] === value){				return true;			}		}		return false;	},	getValues: function(item, attribute){		//	summary: 		//      See dojo.data.api.Read.getValue()		this._assertIsItem(item);		this._assertIsAttribute(attribute);		if(attribute === "title"){			return [this._unescapeHtml(item.title)];		}else if(attribute === "author"){			return [this._unescapeHtml(item.author)];		}else if(attribute === "datePublished"){			return [dojo.date.stamp.fromISOString(item.published)];		}else if(attribute === "dateTaken"){			return [dojo.date.stamp.fromISOString(item.date_taken)];		}else if(attribute === "imageUrlSmall"){			return [item.media.m.replace(/_m\./, "_s.")];		}else if(attribute === "imageUrl"){			return [item.media.m.replace(/_m\./, ".")];		}else if(attribute === "imageUrlMedium"){			return [item.media.m];		}else if(attribute === "link"){			return [item.link];		}else if(attribute === "tags"){			return item.tags.split(" ");		}else if(attribute === "description"){			return [this._unescapeHtml(item.description)];		}		return undefined;	},	isItem: function(item){		//	summary: 		//      See dojo.data.api.Read.isItem()		if(item && item[this._storeRef] === this){			return true;		}		return false;	},		close: function(request){		//	summary: 		//      See dojo.data.api.Read.close()	},	_fetchItems: function(request, fetchHandler, errorHandler){		//	summary:		//		Fetch flickr items that match to a query		//	request:		//		A request object		//	fetchHandler:		//		A function to call for fetched items		//	errorHandler:		//		A function to call on error		if(!request.query){			request.query={};		}		//Build up the content to send the request for.		var content = {format: "json", tagmode:"any"};		if (request.query.tags) {			content.tags = request.query.tags;		}		if (request.query.tagmode) {			content.tagmode = request.query.tagmode;		}		if (request.query.userid) {			content.id = request.query.userid;		}		if (request.query.userids) {			content.ids = request.query.userids;		}		if (request.query.lang) {			content.lang = request.query.lang;		}		//Linking this up to Flickr is a PAIN!		var self = this;		var handle = null;		var getArgs = {			url: this._flickrUrl,			preventCache: true,			content: content		};		var myHandler = function(data){			if(handle !== null){				dojo.disconnect(handle);			}			//Process the items...			fetchHandler(self._processFlickrData(data), request);		};        handle = dojo.connect("jsonFlickrFeed", myHandler);		var deferred = dojo.io.script.get(getArgs);				//We only set up the errback, because the callback isn't ever really used because we have		//to link to the jsonFlickrFeed function....		deferred.addErrback(function(error){			dojo.disconnect(handle);			errorHandler(error, request);		});	},	_processFlickrData: function(data){		 var items = [];		 if(data.items){			 items = data.items;			 //Add on the store ref so that isItem can work.			 for(var i = 0; i < data.items.length; i++){				 var item = data.items[i];				 item[this._storeRef] = this;			 }		 }		 return items;	},	_unescapeHtml: function(str){		// summary: Utility function to un-escape XML special characters in an HTML string.		// description: Utility function to un-escape XML special characters in an HTML string.		//		// str: String.		//   The string to un-escape		// returns: HTML String converted back to the normal text (unescaped) characters (<,>,&, ", etc,).		//		//TODO: Check to see if theres already compatible escape() in dojo.string or dojo.html		str = str.replace(/&amp;/gm, "&").replace(/&lt;/gm, "<").replace(/&gt;/gm, ">").replace(/&quot;/gm, "\"");		str = str.replace(/&#39;/gm, "'"); 		return str;	}});dojo.extend(dojox.data.FlickrStore,dojo.data.util.simpleFetch);										  										  //We have to define this because of how the Flickr API works.  //This somewhat stinks, but what can you do?if (!jsonFlickrFeed) {	var jsonFlickrFeed = function(data){};}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -