diff --git a/lib/OpenLayers/Protocol/Script.js b/lib/OpenLayers/Protocol/Script.js index 49e332b7f0..5d4509a9d4 100644 --- a/lib/OpenLayers/Protocol/Script.js +++ b/lib/OpenLayers/Protocol/Script.js @@ -54,20 +54,12 @@ OpenLayers.Protocol.Script = OpenLayers.Class(OpenLayers.Protocol, { callback: null, /** - * APIProperty: scope - * {Object} Optional ``this`` object for the callback. Read-only, set - * through the options passed to the constructor. + * APIProperty: callbackTemplate + * {String} Template for creating a unique callback function name + * for the registry. Should include ${id}. + * Default is "OpenLayers.Protocol.Script.registry[${id}]". */ - scope: null, - - /** - * APIProperty: format - * {} Format for parsing features. Default is an - * format. If an alternative is provided, - * the format's read method must take an object and return an array - * of features. - */ - format: null, + callbackTemplate: "OpenLayers.Protocol.Script.registry[${id}]", /** * APIProperty: callbackKey @@ -88,6 +80,22 @@ OpenLayers.Protocol.Script = OpenLayers.Class(OpenLayers.Protocol, { */ callbackPrefix: "", + /** + * APIProperty: scope + * {Object} Optional ``this`` object for the callback. Read-only, set + * through the options passed to the constructor. + */ + scope: null, + + /** + * APIProperty: format + * {} Format for parsing features. Default is an + * format. If an alternative is provided, + * the format's read method must take an object and return an array + * of features. + */ + format: null, + /** * Property: pendingRequests * {Object} References all pending requests. Property names are script @@ -212,7 +220,7 @@ OpenLayers.Protocol.Script = OpenLayers.Class(OpenLayers.Protocol, { */ createRequest: function(url, params, callback) { var id = OpenLayers.Protocol.Script.register(callback); - var name = "OpenLayers.Protocol.Script.registry[" + id + "]"; + var name = OpenLayers.String.format(this.callbackTemplate, {id: id}); params = OpenLayers.Util.extend({}, params); params[this.callbackKey] = this.callbackPrefix + name; url = OpenLayers.Util.urlAppend( @@ -333,7 +341,7 @@ OpenLayers.Protocol.Script = OpenLayers.Class(OpenLayers.Protocol, { (function() { var o = OpenLayers.Protocol.Script; var counter = 0; - o.registry = []; + o.registry = {}; /** * Function: OpenLayers.Protocol.Script.register @@ -345,12 +353,11 @@ OpenLayers.Protocol.Script = OpenLayers.Class(OpenLayers.Protocol, { * that is the JSON returned by the service. * * Returns: - * {Number} An identifier for retreiving the registered callback. + * {Number} An identifier for retrieving the registered callback. */ o.register = function(callback) { - var id = ++counter; + var id = "c"+(++counter); o.registry[id] = function() { - o.unregister(id); callback.apply(this, arguments); }; return id;