2010-10-07 5 views
7

Ich arbeite mit COGNOS, einer sehr frustrierenden BI-Anwendung, die stark auf Javascript basiert. Wenn eine Box <select> geändert wird, werden die Daten auf dem Bildschirm hauptsächlich von einer AJAX-Funktion oder etwas ähnlichem aktualisiert. Ich möchte diese Änderung mit jQuery erzwingen, aber ich bin mir nicht sicher, wie ich den Anruf abfangen kann, damit ich ihn kopieren kann. Es gibt auch eine Tonne JS-Code, so dass es schwer ist, von Hand zu finden.Wie finde ich Javascript-Funktionen, die aufgerufen werden?

Gibt es eine Möglichkeit, Firebug zu verwenden, um die verschiedenen aufgerufenen Funktionen anzuzeigen? Ist meine Vorgehensweise korrekt?

Antwort

11

Wenn Sie das Firebug Skript Panel öffnen, befindet sich oben links eine Schaltfläche, die wie eine Pause-Schaltfläche auf einer TV-Fernbedienung aussieht: ||. Das weist Firebug an, das nächste laufende JavaScript zu pausieren. So würde ich die Seite öffnen, stellen Sie sicher, dass das Skript Panel aktiviert ist, klicken Sie auf diese Schaltfläche, und ändern Sie dann die select Box. Das sollte einen Haltepunkt in Firebug auslösen, nach dem Sie durch den Code gehen können, um herauszufinden, wann wann aufgerufen wird.

Wenn es Ihnen nichts ausmacht, ein anderes Tool zu verwenden, verfügt Google Chrome über einen integrierten Debugger und einen Inspektor, der Ihnen die Ereignishandler anzeigen kann, die an ein Element angehängt sind. Wenn Sie also in Chrome die Seite aufrufen, klicken Sie mit der rechten Maustaste auf das Feld select und wählen Sie Inspect Element. Auf der rechten Seite unten sollte eine Liste der Ereignishandler angezeigt werden. Das kann ein bisschen einfacher sein, mit zu arbeiten.

schließlich in jedem Werkzeug, wenn Sie das Stück Code in den Eingeweiden zu identifizieren, die die Daten reload tatsächlich verursacht (durch eine URL suchen, zum Beispiel, oder eine XmlHTTPRequest Instanz oder .ajax jQuery, .post, .get, Oder .getJSON Funktionen, wenn es jquery verwendet), können Sie einen Haltepunkt darauf setzen und dann die Auswahl auslösen, dann schauen Sie sich die Aufrufliste (auf der rechten Seite in beiden Tools).

Viel Glück!

+0

Ich bevorzuge GC tatsächlich, aber ich dachte nicht, dass es mit Cognos funktionieren würde. Ich werde es versuchen und melden. Danke TJ! – Nic

+0

Eep. Ok, also kein Glück in Chrome, weil es nicht von Cognos unterstützt wird.Also ging ich zurück zu FF/FB und nutzte die Pause wie vorgeschlagen. Ich habe einen AJAX-Anruf ausgelöst, aber das Skript wurde nicht unterbrochen. Ich tat dies, bevor ich die Frage stellte und dachte, ich hätte etwas falsch gemacht. Irgendwelche Ideen? Der AJAX-Anruf wurde noch gesendet. – Nic

+0

@ melee: Wow. Eigentlich wow^2 weil ich überrascht bin, dass Cognos nicht mit Chrome funktioniert (was machen sie, Browser sniffing? Tsk). Leider, wenn die Pause nicht funktioniert hat, können Sie nur herausfinden, wie sie den Handler anhängen (einfach, wenn das 'select' eine' id' oder sogar einen 'onclick' hat, härter, wenn dies nicht der Fall ist) und setzen Sie einen Haltepunkt auf den gefundenen Handler. Aber das wusstest du. :-(Viel Glück! –

0

Wenn Sie Firefox + Firebug verwenden, können Sie die Registerkarte "net" aktivieren und alle Ajax-Aufrufe überprüfen, die vorgenommen werden. (siehe unter XHR-Taste)

+0

Richtig, das ist der Anruf, der mit den Post-Daten gemacht wird, aber zeigt es die tatsächliche Funktion, die den AJAX Anruf gemacht hat? (Macht das Sinn?) – Nic

0

Wählen Sie das Element in Firefox und sehen Sie, was sein onclick-Ereignis ist oder ob es eine ID hat und durchsuchen Sie dann die JS-Datei nach dieser ID.

+0

Versucht, leider, ich denke, es ist eine OnChange-Funktion ausgeführt wird. – Nic

1

Leider sind Sie wahrscheinlich am besten in Cognos mit der altmodischen Alert-Box-Methode des Debuggens. IBM hat gesagt, dass neuere Versionen von Cognos in Firefox funktionieren werden, aber der Code vor dem IBM war sehr IE-zentriert, und nicht einmal besonders gut in neuen Versionen von IE. Sie können die F12-Debugger-Funktionalität auch in neueren IE-Versionen verwenden, was manchmal nützlich ist. Ich behaupte nicht, dass irgendetwas so gut ist wie Firebug.

Auch in Bezug auf das eigentliche Problem, das Sie versuchten zu debuggen, hat die Auswahl in Cognos, wenn Sie darauf klicken, während Sie den Bericht bearbeiten, einen Parameter namens "Auto-submit". Wenn Sie dies in "Nein" ändern, müssen Sie das Verhalten in jQuery nicht deaktivieren.