Salam saytımda js problemi var. kohnə versiya İnternet explorer işlədəndə bunun şahidi oldum. Elə bildim css səhvidir amma sonra isə firofoxun firebug pluginin yukledim.ve 2 JS faylinda səhv tapıldı.Bunu saytı söyləmədən kodu bura daxil etsəm kömək edə bilərsiz?
prtotype.js faylında 3840 sətirdə səhv var.firebug sehvi bele gosterir:
handler is undefined
handler.call(element, event) -aşağıdakı kodda bu bəndi axtarın.yəni 3840-cı bənddir bu-
1 | /*----------3628-ci bənd.yuxarida bashqa kodlardi---------------------------------*/ |
2 | Abstract.EventObserver = Class.create({ |
3 | initialize: function(element, callback) { |
4 | this.element = $(element); |
5 | this.callback = callback; |
6 | this.lastValue = this.getValue(); |
7 | if (this.element.tagName.toLowerCase() == 'form') |
8 | this.registerFormCallbacks(); |
10 | this.registerCallback(this.element); |
12 | onElementEvent: function() { |
13 | var value = this.getValue(); |
14 | if (this.lastValue != value) { |
15 | this.callback(this.element, value); |
16 | this.lastValue = value; |
19 | registerFormCallbacks: function() { |
20 | Form.getElements(this.element).each(this.registerCallback, this); |
22 | registerCallback: function(element) { |
24 | switch (element.type.toLowerCase()) { |
27 | Event.observe(element, 'click', this.onElementEvent.bind(this)); |
30 | Event.observe(element, 'change', this.onElementEvent.bind(this)); |
36 | Form.Element.EventObserver = Class.create(Abstract.EventObserver, { |
38 | return Form.Element.getValue(this.element); |
41 | Form.EventObserver = Class.create(Abstract.EventObserver, { |
43 | return Form.serialize(this.element); |
46 | if (!window.Event) var Event = { }; |
63 | relatedTarget: function(event) { |
66 | case 'mouseover': element = event.fromElement; break; |
67 | case 'mouseout': element = event.toElement; break; |
70 | return Element.extend(element); |
73 | Event.Methods = (function() { |
75 | if (Prototype.Browser.IE) { |
76 | var buttonMap = { 0: 1, 1: 4, 2: 2 }; |
77 | isButton = function(event, code) { |
78 | return event.button == buttonMap[code]; |
80 | } else if (Prototype.Browser.WebKit) { |
81 | isButton = function(event, code) { |
83 | case 0: return event.which == 1 && !event.metaKey; |
84 | case 1: return event.which == 1 && event.metaKey; |
89 | isButton = function(event, code) { |
90 | return event.which ? (event.which === code + 1) : (event.button === code); |
94 | isLeftClick: function(event) { return isButton(event, 0) }, |
95 | isMiddleClick: function(event) { return isButton(event, 1) }, |
96 | isRightClick: function(event) { return isButton(event, 2) }, |
97 | element: function(event) { |
98 | var node = Event.extend(event).target; |
99 | return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node); |
101 | findElement: function(event, expression) { |
102 | var element = Event.element(event); |
103 | return element.match(expression) ? element : element.up(expression); |
105 | pointer: function(event) { |
107 | x: event.pageX || (event.clientX + |
108 | (document.documentElement.scrollLeft || document.body.scrollLeft)), |
109 | y: event.pageY || (event.clientY + |
110 | (document.documentElement.scrollTop || document.body.scrollTop)) |
113 | pointerX: function(event) { return Event.pointer(event).x }, |
114 | pointerY: function(event) { return Event.pointer(event).y }, |
115 | stop: function(event) { |
117 | event.preventDefault(); |
118 | event.stopPropagation(); |
123 | Event.extend = (function() { |
124 | var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { |
125 | m[name] = Event.Methods[name].methodize(); |
128 | if (Prototype.Browser.IE) { |
129 | Object.extend(methods, { |
130 | stopPropagation: function() { this.cancelBubble = true }, |
131 | preventDefault: function() { this.returnValue = false }, |
132 | inspect: function() { return "[object Event]" } |
134 | return function(event) { |
135 | if (!event) return false; |
136 | if (event._extendedByPrototype) return event; |
137 | event._extendedByPrototype = Prototype.emptyFunction; |
138 | var pointer = Event.pointer(event); |
139 | Object.extend(event, { |
140 | target: event.srcElement, |
141 | relatedTarget: Event.relatedTarget(event), |
145 | return Object.extend(event, methods); |
148 | Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__; |
149 | Object.extend(Event.prototype, methods); |
153 | Object.extend(Event, (function() { |
154 | var cache = Event.cache; |
155 | function getEventID(element) { |
156 | if (element._eventID) return element._eventID; |
157 | arguments.callee.id = arguments.callee.id || 1; |
158 | return element._eventID = ++arguments.callee.id; |
160 | function getDOMEventName(eventName) { |
161 | if (eventName && eventName.include(':')) return "dataavailable"; |
164 | function getCacheForID(id) { |
165 | return cache[id] = cache[id] || { }; |
167 | function getWrappersForEventName(id, eventName) { |
168 | var c = getCacheForID(id); |
169 | return c[eventName] = c[eventName] || []; |
171 | function createWrapper(element, eventName, handler) { |
172 | var id = getEventID(element); |
173 | var c = getWrappersForEventName(id, eventName); |
174 | if (c.pluck("handler").include(handler)) return false; |
175 | var wrapper = function(event) { |
176 | if (!Event || !Event.extend || |
177 | (event.eventName && event.eventName != eventName)) |
180 | handler.call(element, event) |
182 | wrapper.handler = handler; |
186 | function findWrapper(id, eventName, handler) { |
187 | var c = getWrappersForEventName(id, eventName); |
188 | return c.find(function(wrapper) { return wrapper.handler == handler }); |
190 | function destroyWrapper(id, eventName, handler) { |
191 | var c = getCacheForID(id); |
192 | if (!c[eventName]) return false; |
193 | c[eventName] = c[eventName].without(findWrapper(id, eventName, handler)); |
195 | function destroyCache() { |
197 | for (var eventName in cache[id]) |
198 | cache[id][eventName] = null; |
200 | if (window.attachEvent) { |
201 | window.attachEvent("onunload", destroyCache); |
204 | observe: function(element, eventName, handler) { |
206 | var name = getDOMEventName(eventName); |
207 | var wrapper = createWrapper(element, eventName, handler); |
208 | if (!wrapper) return element; |
209 | if (element.addEventListener) { |
210 | element.addEventListener(name, wrapper, false); |
212 | element.attachEvent("on" + name, wrapper); |
216 | stopObserving: function(element, eventName, handler) { |
218 | var id = getEventID(element), name = getDOMEventName(eventName); |
219 | if (!handler && eventName) { |
220 | getWrappersForEventName(id, eventName).each(function(wrapper) { |
221 | element.stopObserving(eventName, wrapper.handler); |
224 | } else if (!eventName) { |
225 | Object.keys(getCacheForID(id)).each(function(eventName) { |
226 | element.stopObserving(eventName); |
230 | var wrapper = findWrapper(id, eventName, handler); |
231 | if (!wrapper) return element; |
232 | if (element.removeEventListener) { |
233 | element.removeEventListener(name, wrapper, false); |
235 | element.detachEvent("on" + name, wrapper); |
237 | destroyWrapper(id, eventName, handler); |
240 | fire: function(element, eventName, memo) { |
242 | if (element == document && document.createEvent && !element.dispatchEvent) |
243 | element = document.documentElement; |
244 | if (document.createEvent) { |
245 | var event = document.createEvent("HTMLEvents"); |
246 | event.initEvent("dataavailable", true, true); |
248 | var event = document.createEventObject(); |
249 | event.eventType = "ondataavailable"; |
251 | event.eventName = eventName; |
252 | event.memo = memo || { }; |
253 | if (document.createEvent) { |
254 | element.dispatchEvent(event); |
256 | element.fireEvent(event.eventType, event); |
262 | Object.extend(Event, Event.Methods); |
265 | observe: Event.observe, |
266 | stopObserving: Event.stopObserving |
268 | Object.extend(document, { |
269 | fire: Element.Methods.fire.methodize(), |
270 | observe: Element.Methods.observe.methodize(), |
271 | stopObserving: Element.Methods.stopObserving.methodize() |
274 | /* Support for the DOMContentLoaded event is based on work by Dan Webb, |
275 | Matthias Miller, Dean Edwards and John Resig. */ |
276 | var timer, fired = false; |
277 | function fireContentLoadedEvent() { |
279 | if (timer) window.clearInterval(timer); |
280 | document.fire("dom:loaded"); |
283 | if (document.addEventListener) { |
284 | if (Prototype.Browser.WebKit) { |
285 | timer = window.setInterval(function() { |
286 | if (/loaded|complete/.test(document.readyState)) |
287 | fireContentLoadedEvent(); |
289 | Event.observe(window, "load", fireContentLoadedEvent); |
291 | document.addEventListener("DOMContentLoaded", |
292 | fireContentLoadedEvent, false); |
296 | $("__onDOMContentLoaded").onreadystatechange = function() { |
297 | if (this.readyState == "complete") { |
298 | this.onreadystatechange = null; |
299 | fireContentLoadedEvent(); |
304 | /*------------------ 3995 bənd + bundan sora bashqa kodlardi -------------------------*/ |
Verilmiş cavablar və yazılan şərhlər (1 cavab var)
1
Hazır proqramların bir tərəfi yaxşıdır ki, problem olanda həlli tez tapılır. Buyurun, həmin proqramdakı səhvin düzəldilməsi: http://stackoverflow.com/questions/43584/undefined-handler-from-prototype-js-line-3877
Sual verin
Cavab verin