<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://getfirebug.com/wiki/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://getfirebug.com/wiki/index.php?title=Special:Contributions/Patricioreyna&amp;feed=atom&amp;limit=50&amp;target=Patricioreyna&amp;year=&amp;month=</id>
		<title>FirebugWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://getfirebug.com/wiki/index.php?title=Special:Contributions/Patricioreyna&amp;feed=atom&amp;limit=50&amp;target=Patricioreyna&amp;year=&amp;month="/>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/Special:Contributions/Patricioreyna"/>
		<updated>2013-05-19T17:38:49Z</updated>
		<subtitle>From FirebugWiki</subtitle>
		<generator>MediaWiki 1.16.5</generator>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2013-04-13T18:46:40Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
&lt;br /&gt;
NOTE: The current version of the extension does not work with dojo 1.8+ and FF17+ . Please disable the extension, until we upload an update.&lt;br /&gt;
&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
NOTE: The current version of the extension does not work with dojo 1.8+ and FF17+ . Please disable the extension, until we upload an update.&lt;br /&gt;
&lt;br /&gt;
* '''Download from:'''&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 11 and 12 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
&lt;br /&gt;
'''Notes/Configuration:'''&lt;br /&gt;
* You need to '''enable Firebug's Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
&lt;br /&gt;
* This extension works better with &amp;quot;src&amp;quot; versions of Dojo . Also in dojo.config you need to have &amp;quot;'''dojo-publish-privates: 1''' , in the dojo's has.cache&amp;quot;(anyway, it's currently the dojo default value).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Main Panel==&lt;br /&gt;
&lt;br /&gt;
This extension also supports inspecting the GFX Structure in the web page.&lt;br /&gt;
&lt;br /&gt;
With this panel you can see a tree containing all available GFX surfaces and shapes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following picture you can see the GFX structure displayed in the extension panel. Also you can see the hours hand of the 1st clock highlighted in blue . &lt;br /&gt;
[[File:GFX-extension-small.PNG|GFX main panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Support for Highlighting and inspection:'''&lt;br /&gt;
* If doing a mouseover in the panel's tree , you will see the pointed shape being highlighted in the web page.&lt;br /&gt;
* You can r-click on a GFX Surface/Shape in the Web page, and select &amp;quot;Inspect in GFX panel&amp;quot;. When doing this, the chosen Shape will be displayed in the extension main panel tree.&lt;br /&gt;
* The GFX panel supports Firebug inspector tool (i.e. the arrow-icon in the toolbar):&lt;br /&gt;
** When enabling the inspector tool from inside the GFX panel, you will be able to select any shape in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following picture you can see the Firebug inspector tool enabled in the GFX panel. Also, a highlighted shape (under the mouse pointer, in green) in the web page. &lt;br /&gt;
[[File:Inspector-tool-small.png|GFX Inspector tool]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main panel tree is integrated with other Firebug panels: You can r-click on a Surface or Shape and select &amp;quot;Inspect in HTML Tab&amp;quot; or &amp;quot;Inspect in DOM Tab&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==GFX Side Panels==&lt;br /&gt;
&lt;br /&gt;
Currently there are 2 GFX side panels bundled with the extension:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Info&amp;quot; side panel=== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays properties of the selected Surface. It is only active when a Surface is selected in the main panel's tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shape properties&amp;quot; side panel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays the properties of the selected GFX Shape.&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2013-04-13T18:46:12Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Intro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
&lt;br /&gt;
NOTE: The current version of the extension does not work with dojo 1.8+ and FF17+ . Please disable the extension, until we upload an update.&lt;br /&gt;
&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* '''Download from:'''&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 11 and 12 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
&lt;br /&gt;
'''Notes/Configuration:'''&lt;br /&gt;
* You need to '''enable Firebug's Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
&lt;br /&gt;
* This extension works better with &amp;quot;src&amp;quot; versions of Dojo . Also in dojo.config you need to have &amp;quot;'''dojo-publish-privates: 1''' , in the dojo's has.cache&amp;quot;(anyway, it's currently the dojo default value).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Main Panel==&lt;br /&gt;
&lt;br /&gt;
This extension also supports inspecting the GFX Structure in the web page.&lt;br /&gt;
&lt;br /&gt;
With this panel you can see a tree containing all available GFX surfaces and shapes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following picture you can see the GFX structure displayed in the extension panel. Also you can see the hours hand of the 1st clock highlighted in blue . &lt;br /&gt;
[[File:GFX-extension-small.PNG|GFX main panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Support for Highlighting and inspection:'''&lt;br /&gt;
* If doing a mouseover in the panel's tree , you will see the pointed shape being highlighted in the web page.&lt;br /&gt;
* You can r-click on a GFX Surface/Shape in the Web page, and select &amp;quot;Inspect in GFX panel&amp;quot;. When doing this, the chosen Shape will be displayed in the extension main panel tree.&lt;br /&gt;
* The GFX panel supports Firebug inspector tool (i.e. the arrow-icon in the toolbar):&lt;br /&gt;
** When enabling the inspector tool from inside the GFX panel, you will be able to select any shape in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following picture you can see the Firebug inspector tool enabled in the GFX panel. Also, a highlighted shape (under the mouse pointer, in green) in the web page. &lt;br /&gt;
[[File:Inspector-tool-small.png|GFX Inspector tool]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main panel tree is integrated with other Firebug panels: You can r-click on a Surface or Shape and select &amp;quot;Inspect in HTML Tab&amp;quot; or &amp;quot;Inspect in DOM Tab&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==GFX Side Panels==&lt;br /&gt;
&lt;br /&gt;
Currently there are 2 GFX side panels bundled with the extension:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Info&amp;quot; side panel=== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays properties of the selected Surface. It is only active when a Surface is selected in the main panel's tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shape properties&amp;quot; side panel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays the properties of the selected GFX Shape.&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T22:50:03Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* '''Download from:'''&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 11 and 12 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
&lt;br /&gt;
'''Notes/Configuration:'''&lt;br /&gt;
* You need to '''enable Firebug's Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
&lt;br /&gt;
* This extension works better with &amp;quot;src&amp;quot; versions of Dojo . Also in dojo.config you need to have &amp;quot;'''dojo-publish-privates: 1''' , in the dojo's has.cache&amp;quot;(anyway, it's currently the dojo default value).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Main Panel==&lt;br /&gt;
&lt;br /&gt;
This extension also supports inspecting the GFX Structure in the web page.&lt;br /&gt;
&lt;br /&gt;
With this panel you can see a tree containing all available GFX surfaces and shapes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following picture you can see the GFX structure displayed in the extension panel. Also you can see the hours hand of the 1st clock highlighted in blue . &lt;br /&gt;
[[File:GFX-extension-small.PNG|GFX main panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Support for Highlighting and inspection:'''&lt;br /&gt;
* If doing a mouseover in the panel's tree , you will see the pointed shape being highlighted in the web page.&lt;br /&gt;
* You can r-click on a GFX Surface/Shape in the Web page, and select &amp;quot;Inspect in GFX panel&amp;quot;. When doing this, the chosen Shape will be displayed in the extension main panel tree.&lt;br /&gt;
* The GFX panel supports Firebug inspector tool (i.e. the arrow-icon in the toolbar):&lt;br /&gt;
** When enabling the inspector tool from inside the GFX panel, you will be able to select any shape in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following picture you can see the Firebug inspector tool enabled in the GFX panel. Also, a highlighted shape (under the mouse pointer, in green) in the web page. &lt;br /&gt;
[[File:Inspector-tool-small.png|GFX Inspector tool]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main panel tree is integrated with other Firebug panels: You can r-click on a Surface or Shape and select &amp;quot;Inspect in HTML Tab&amp;quot; or &amp;quot;Inspect in DOM Tab&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==GFX Side Panels==&lt;br /&gt;
&lt;br /&gt;
Currently there are 2 GFX side panels bundled with the extension:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Info&amp;quot; side panel=== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays properties of the selected Surface. It is only active when a Surface is selected in the main panel's tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shape properties&amp;quot; side panel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays the properties of the selected GFX Shape.&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T22:49:23Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 11 and 12 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
&lt;br /&gt;
Notes/Configuration:&lt;br /&gt;
* You need to '''enable Firebug's Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
&lt;br /&gt;
* This extension works better with &amp;quot;src&amp;quot; versions of Dojo . Also in dojo.config you need to have &amp;quot;dojo-publish-privates: 1 , in the dojo's has.cache&amp;quot;(anyway, it's currently the dojo default value).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Main Panel==&lt;br /&gt;
&lt;br /&gt;
This extension also supports inspecting the GFX Structure in the web page.&lt;br /&gt;
&lt;br /&gt;
With this panel you can see a tree containing all available GFX surfaces and shapes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following picture you can see the GFX structure displayed in the extension panel. Also you can see the hours hand of the 1st clock highlighted in blue . &lt;br /&gt;
[[File:GFX-extension-small.PNG|GFX main panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Support for Highlighting and inspection:'''&lt;br /&gt;
* If doing a mouseover in the panel's tree , you will see the pointed shape being highlighted in the web page.&lt;br /&gt;
* You can r-click on a GFX Surface/Shape in the Web page, and select &amp;quot;Inspect in GFX panel&amp;quot;. When doing this, the chosen Shape will be displayed in the extension main panel tree.&lt;br /&gt;
* The GFX panel supports Firebug inspector tool (i.e. the arrow-icon in the toolbar):&lt;br /&gt;
** When enabling the inspector tool from inside the GFX panel, you will be able to select any shape in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following picture you can see the Firebug inspector tool enabled in the GFX panel. Also, a highlighted shape (under the mouse pointer, in green) in the web page. &lt;br /&gt;
[[File:Inspector-tool-small.png|GFX Inspector tool]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main panel tree is integrated with other Firebug panels: You can r-click on a Surface or Shape and select &amp;quot;Inspect in HTML Tab&amp;quot; or &amp;quot;Inspect in DOM Tab&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==GFX Side Panels==&lt;br /&gt;
&lt;br /&gt;
Currently there are 2 GFX side panels bundled with the extension:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Info&amp;quot; side panel=== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays properties of the selected Surface. It is only active when a Surface is selected in the main panel's tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shape properties&amp;quot; side panel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays the properties of the selected GFX Shape.&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T22:43:16Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* GFX Main Panel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 11 and 12 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Main Panel==&lt;br /&gt;
&lt;br /&gt;
This extension also supports inspecting the GFX Structure in the web page.&lt;br /&gt;
&lt;br /&gt;
With this panel you can see a tree containing all available GFX surfaces and shapes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following picture you can see the GFX structure displayed in the extension panel. Also you can see the hours hand of the 1st clock highlighted in blue . &lt;br /&gt;
[[File:GFX-extension-small.PNG|GFX main panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Support for Highlighting and inspection:'''&lt;br /&gt;
* If doing a mouseover in the panel's tree , you will see the pointed shape being highlighted in the web page.&lt;br /&gt;
* You can r-click on a GFX Surface/Shape in the Web page, and select &amp;quot;Inspect in GFX panel&amp;quot;. When doing this, the chosen Shape will be displayed in the extension main panel tree.&lt;br /&gt;
* The GFX panel supports Firebug inspector tool (i.e. the arrow-icon in the toolbar):&lt;br /&gt;
** When enabling the inspector tool from inside the GFX panel, you will be able to select any shape in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following picture you can see the Firebug inspector tool enabled in the GFX panel. Also, a highlighted shape (under the mouse pointer, in green) in the web page. &lt;br /&gt;
[[File:Inspector-tool-small.png|GFX Inspector tool]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main panel tree is integrated with other Firebug panels: You can r-click on a Surface or Shape and select &amp;quot;Inspect in HTML Tab&amp;quot; or &amp;quot;Inspect in DOM Tab&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==GFX Side Panels==&lt;br /&gt;
&lt;br /&gt;
Currently there are 2 GFX side panels bundled with the extension:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Info&amp;quot; side panel=== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays properties of the selected Surface. It is only active when a Surface is selected in the main panel's tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shape properties&amp;quot; side panel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays the properties of the selected GFX Shape.&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T22:41:32Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* GFX Main Panel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 11 and 12 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Main Panel==&lt;br /&gt;
&lt;br /&gt;
This extension also supports inspecting the GFX Structure in the web page.&lt;br /&gt;
&lt;br /&gt;
With this panel you can see a tree containing all available GFX surfaces and shapes.&lt;br /&gt;
&lt;br /&gt;
[[File:GFX-extension-small.PNG|GFX main panel]]&lt;br /&gt;
&lt;br /&gt;
In the picture you can see the GFX structure displayed in the extension panel. Also you can see the hours hand of the 1st clock highlighted in blue . &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Support for Highlighting and inspection:'''&lt;br /&gt;
* If doing a mouseover in the panel's tree , you will see the pointed shape being highlighted in the web page.&lt;br /&gt;
* You can r-click on a GFX Surface/Shape in the Web page, and select &amp;quot;Inspect in GFX panel&amp;quot;. When doing this, the chosen Shape will be displayed in the extension main panel tree.&lt;br /&gt;
* The GFX panel supports Firebug inspector tool (i.e. the arrow-icon in the toolbar):&lt;br /&gt;
** When enabling the inspector tool from inside the GFX panel, you will be able to select any shape in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Inspector-tool-small.png|GFX Inspector tool]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main panel tree is integrated with other Firebug panels: You can r-click on a Surface or Shape and select &amp;quot;Inspect in HTML Tab&amp;quot; or &amp;quot;Inspect in DOM Tab&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==GFX Side Panels==&lt;br /&gt;
&lt;br /&gt;
Currently there are 2 GFX side panels bundled with the extension:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Info&amp;quot; side panel=== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays properties of the selected Surface. It is only active when a Surface is selected in the main panel's tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shape properties&amp;quot; side panel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays the properties of the selected GFX Shape.&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/File:Inspector-tool-small.png</id>
		<title>File:Inspector-tool-small.png</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/File:Inspector-tool-small.png"/>
				<updated>2012-05-20T22:39:56Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T22:07:52Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* GFX Side Panels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 11 and 12 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Main Panel==&lt;br /&gt;
&lt;br /&gt;
This extension also supports inspecting the GFX Structure in the web page.&lt;br /&gt;
&lt;br /&gt;
With this panel you can see a tree containing all available GFX surfaces and shapes.&lt;br /&gt;
&lt;br /&gt;
[[File:GFX-extension-small.PNG|GFX main panel]]&lt;br /&gt;
&lt;br /&gt;
In the picture you can see the GFX structure displayed in the extension panel. Also you can see the hours hand of the 1st clock highlighted in blue . &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Support for Highlighting and inspection:'''&lt;br /&gt;
* If doing a mouseover in the panel's tree , you will see the pointed shape being highlighted in the web page.&lt;br /&gt;
* You can r-click on a GFX Surface/Shape in the Web page, and select &amp;quot;Inspect in GFX panel&amp;quot;. When doing this, the chosen Shape will be displayed in the extension main panel tree.&lt;br /&gt;
* The GFX panel supports Firebug inspector tool (i.e. the arrow-icon in the toolbar):&lt;br /&gt;
** When enabling the inspector tool from inside the GFX panel, you will be able to select any shape in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main panel tree is integrated with other Firebug panels: You can r-click on a Surface or Shape and select &amp;quot;Inspect in HTML Tab&amp;quot; or &amp;quot;Inspect in DOM Tab&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==GFX Side Panels==&lt;br /&gt;
&lt;br /&gt;
Currently there are 2 GFX side panels bundled with the extension:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Info&amp;quot; side panel=== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays properties of the selected Surface. It is only active when a Surface is selected in the main panel's tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shape properties&amp;quot; side panel===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It displays the properties of the selected GFX Shape.&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T22:06:59Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* GFX Main Panel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 11 and 12 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Main Panel==&lt;br /&gt;
&lt;br /&gt;
This extension also supports inspecting the GFX Structure in the web page.&lt;br /&gt;
&lt;br /&gt;
With this panel you can see a tree containing all available GFX surfaces and shapes.&lt;br /&gt;
&lt;br /&gt;
[[File:GFX-extension-small.PNG|GFX main panel]]&lt;br /&gt;
&lt;br /&gt;
In the picture you can see the GFX structure displayed in the extension panel. Also you can see the hours hand of the 1st clock highlighted in blue . &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Support for Highlighting and inspection:'''&lt;br /&gt;
* If doing a mouseover in the panel's tree , you will see the pointed shape being highlighted in the web page.&lt;br /&gt;
* You can r-click on a GFX Surface/Shape in the Web page, and select &amp;quot;Inspect in GFX panel&amp;quot;. When doing this, the chosen Shape will be displayed in the extension main panel tree.&lt;br /&gt;
* The GFX panel supports Firebug inspector tool (i.e. the arrow-icon in the toolbar):&lt;br /&gt;
** When enabling the inspector tool from inside the GFX panel, you will be able to select any shape in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main panel tree is integrated with other Firebug panels: You can r-click on a Surface or Shape and select &amp;quot;Inspect in HTML Tab&amp;quot; or &amp;quot;Inspect in DOM Tab&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==GFX Side Panels==&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Info&amp;quot; side panel=== &lt;br /&gt;
It displays properties of the selected Surface. It is only active when a Surface is selected in the main panel's tree.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shape properties&amp;quot; side panel===&lt;br /&gt;
It displays the properties of the selected GFX Shape.&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T22:06:37Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* GFX Main Panel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 11 and 12 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Main Panel==&lt;br /&gt;
&lt;br /&gt;
This extension also supports inspecting the GFX Structure in the web page.&lt;br /&gt;
&lt;br /&gt;
With this panel you can see a tree containing all available GFX surfaces and shapes.&lt;br /&gt;
&lt;br /&gt;
[[File:GFX-extension-small.PNG|GFX main panel]]&lt;br /&gt;
&lt;br /&gt;
In the picture you can see the GFX structure displayed in the extension panel. Also you can see the minutes hand of the 1st clock highlighted in blue . &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Support for Highlighting and inspection:'''&lt;br /&gt;
* If doing a mouseover in the panel's tree , you will see the pointed shape being highlighted in the web page.&lt;br /&gt;
* You can r-click on a GFX Surface/Shape in the Web page, and select &amp;quot;Inspect in GFX panel&amp;quot;. When doing this, the chosen Shape will be displayed in the extension main panel tree.&lt;br /&gt;
* The GFX panel supports Firebug inspector tool (i.e. the arrow-icon in the toolbar):&lt;br /&gt;
** When enabling the inspector tool from inside the GFX panel, you will be able to select any shape in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main panel tree is integrated with other Firebug panels: You can r-click on a Surface or Shape and select &amp;quot;Inspect in HTML Tab&amp;quot; or &amp;quot;Inspect in DOM Tab&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==GFX Side Panels==&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Info&amp;quot; side panel=== &lt;br /&gt;
It displays properties of the selected Surface. It is only active when a Surface is selected in the main panel's tree.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shape properties&amp;quot; side panel===&lt;br /&gt;
It displays the properties of the selected GFX Shape.&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T22:04:55Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* GFX Main Panel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 11 and 12 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Main Panel==&lt;br /&gt;
&lt;br /&gt;
This extension also supports inspecting the GFX Structure in the web page.&lt;br /&gt;
&lt;br /&gt;
With this panel you can see a tree containing all available GFX surfaces and shapes.&lt;br /&gt;
&lt;br /&gt;
[[File:GFX-extension-small.PNG|GFX main panel]]&lt;br /&gt;
&lt;br /&gt;
'''Support for Highlighting and inspection:'''&lt;br /&gt;
* If doing a mouseover in the panel's tree , you will see the pointed shape being highlighted in the web page.&lt;br /&gt;
* You can r-click on a GFX Surface/Shape in the Web page, and select &amp;quot;Inspect in GFX panel&amp;quot;. When doing this, the chosen Shape will be displayed in the extension main panel tree.&lt;br /&gt;
* The GFX panel supports Firebug inspector tool (i.e. the arrow-icon in the toolbar):&lt;br /&gt;
** When enabling the inspector tool from inside the GFX panel, you will be able to select any shape in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main panel tree is integrated with other Firebug panels: You can r-click on a Surface or Shape and select &amp;quot;Inspect in HTML Tab&amp;quot; or &amp;quot;Inspect in DOM Tab&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==GFX Side Panels==&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Info&amp;quot; side panel=== &lt;br /&gt;
It displays properties of the selected Surface. It is only active when a Surface is selected in the main panel's tree.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shape properties&amp;quot; side panel===&lt;br /&gt;
It displays the properties of the selected GFX Shape.&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/File:GFX-extension-small.PNG</id>
		<title>File:GFX-extension-small.PNG</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/File:GFX-extension-small.PNG"/>
				<updated>2012-05-20T22:03:35Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T21:56:53Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* GFX Side Panels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 11 and 12 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Main Panel==&lt;br /&gt;
&lt;br /&gt;
This extension also supports inspecting the GFX Structure in the web page.&lt;br /&gt;
&lt;br /&gt;
With this panel you can see a tree containing all available GFX surfaces and shapes.&lt;br /&gt;
&lt;br /&gt;
'''Support for Highlighting and inspection:'''&lt;br /&gt;
* If doing a mouseover in the panel's tree , you will see the pointed shape being highlighted in the web page.&lt;br /&gt;
* You can r-click on a GFX Surface/Shape in the Web page, and select &amp;quot;Inspect in GFX panel&amp;quot;. When doing this, the chosen Shape will be displayed in the extension main panel tree.&lt;br /&gt;
* The GFX panel supports Firebug inspector tool (i.e. the arrow-icon in the toolbar):&lt;br /&gt;
** When enabling the inspector tool from inside the GFX panel, you will be able to select any shape in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main panel tree is integrated with other Firebug panels: You can r-click on a Surface or Shape and select &amp;quot;Inspect in HTML Tab&amp;quot; or &amp;quot;Inspect in DOM Tab&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Side Panels==&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Info&amp;quot; side panel=== &lt;br /&gt;
It displays properties of the selected Surface. It is only active when a Surface is selected in the main panel's tree.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Shape properties&amp;quot; side panel===&lt;br /&gt;
It displays the properties of the selected GFX Shape.&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T21:56:00Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 11 and 12 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Main Panel==&lt;br /&gt;
&lt;br /&gt;
This extension also supports inspecting the GFX Structure in the web page.&lt;br /&gt;
&lt;br /&gt;
With this panel you can see a tree containing all available GFX surfaces and shapes.&lt;br /&gt;
&lt;br /&gt;
'''Support for Highlighting and inspection:'''&lt;br /&gt;
* If doing a mouseover in the panel's tree , you will see the pointed shape being highlighted in the web page.&lt;br /&gt;
* You can r-click on a GFX Surface/Shape in the Web page, and select &amp;quot;Inspect in GFX panel&amp;quot;. When doing this, the chosen Shape will be displayed in the extension main panel tree.&lt;br /&gt;
* The GFX panel supports Firebug inspector tool (i.e. the arrow-icon in the toolbar):&lt;br /&gt;
** When enabling the inspector tool from inside the GFX panel, you will be able to select any shape in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The main panel tree is integrated with other Firebug panels: You can r-click on a Surface or Shape and select &amp;quot;Inspect in HTML Tab&amp;quot; or &amp;quot;Inspect in DOM Tab&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GFX Side Panels==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T21:40:31Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 11 and 12 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T21:24:41Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Known issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 11 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
&lt;br /&gt;
* You may use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4 or a newer version.&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T21:17:44Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Support for aliases when using multiple dojo versions on page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 11 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid with Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues so far :-) &lt;br /&gt;
* You could use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T21:17:13Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Support for aliases when using multiple dojo versions on page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 11 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
I think this method will work while dojo, dijit, and dojox can be accessed as globals ( probably not valid as of Dojo 2.0 )&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues so far :-) &lt;br /&gt;
* You could use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-20T21:14:31Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Support for aliases when using multiple dojo versions on page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 11 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this.&lt;br /&gt;
To use it, you need to type &amp;quot;about:config&amp;quot; in Firefox's address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues so far :-) &lt;br /&gt;
* You could use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/Firebug_Extensions</id>
		<title>Firebug Extensions</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/Firebug_Extensions"/>
				<updated>2012-05-20T21:10:59Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Dojo Firebug Extension */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Firebug extensions augment or otherwise enhance the Firebug extension. Firebug extensions typically come in the form of Firefox add-ons.&lt;br /&gt;
&lt;br /&gt;
List of known Firebug extensions (in alphabetical order):&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[#Acebug | Acebug]]&lt;br /&gt;
| [[#Adobe_BrowserLab | Adobe BrowserLab]]&lt;br /&gt;
| [[#AMF_Explorer | AMF Explorer]]&lt;br /&gt;
| [[#Arboreal | Arboreal]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Chromebug | Chromebug]]&lt;br /&gt;
| [[#Closure_Inspector | Closure Inspector]]&lt;br /&gt;
| [[#CodeBurner | CodeBurner]]&lt;br /&gt;
| [[#ColdFire | ColdFire]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ConsoleExport | ConsoleExport]]&lt;br /&gt;
| [[#ConsoleML | ConsoleML]]&lt;br /&gt;
| [[#Crossfire | Crossfire]]&lt;br /&gt;
| [[#CSS_Usage | CSS Usage]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#cssUpdater | cssUpdater]]&lt;br /&gt;
| [[#Dojo_Firebug_Extension | Dojo Firebug Extension]]&lt;br /&gt;
| [[#Drupal_For_Firebug | Drupal For Firebug]]&lt;br /&gt;
| [[#Eventbug | Eventbug]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#FireAtlas | FireAtlas]]&lt;br /&gt;
| [[#Firebug_Autocompleter | Firebug Autocompleter]]&lt;br /&gt;
| [[#Firebug_Code_Coverage | Firebug Code Coverage]]&lt;br /&gt;
| [[#Firebug_Paint_Events | Firebug Paint Events]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Firecookie | Firecookie]]&lt;br /&gt;
| [[#Firediff | Firediff]]&lt;br /&gt;
| [[#FireEyes | FireEyes]]&lt;br /&gt;
| [[#FireFile | FireFile]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Firefinder | Firefinder]]&lt;br /&gt;
| [[#FireFlow | FireFlow]]&lt;br /&gt;
| [[#Firefocus | Firefocus]]&lt;br /&gt;
| [[#FireFontFamily | FireFontFamily]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#FireLinkReport | FireLinkReport]]&lt;br /&gt;
| [[#FirePath | FirePath]]&lt;br /&gt;
| [[#FirePHP | FirePHP]]&lt;br /&gt;
| [[#Firepicker | Firepicker]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#FirePython | FirePython]]&lt;br /&gt;
| [[#Firequark | Firequark]]&lt;br /&gt;
| [[#FireQuery | FireQuery]]&lt;br /&gt;
| [[#FireRainbow | FireRainbow]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#FireSass | FireSass]]&lt;br /&gt;
| [[#FireSpider | FireSpider]]&lt;br /&gt;
| [[#FireStarter | FireStarter]]&lt;br /&gt;
| [[#FireStylus | FireStylus]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Firesymfony | Firesymfony]]&lt;br /&gt;
| [[#Flashbug | Flashbug]]&lt;br /&gt;
| [[#FormBug | FormBug]]&lt;br /&gt;
| [[#Illuminations for Developers | Illuminations for Developers (ExtJS/Dojo/etc) ]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Inline_Code_Finder | Inline Code Finder]]&lt;br /&gt;
| [[#Javascript_Deminifier | Javascript Deminifier]]&lt;br /&gt;
| [[#Jiffy | Jiffy]]&lt;br /&gt;
| [[#LiveCoder | Live Coder]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Log_to_NetPanel | Log to NetPanel]]&lt;br /&gt;
| [[#NetExport | NetExport]]&lt;br /&gt;
| [[#Net_Panel_History_Overlay | Net Panel History Overlay]]&lt;br /&gt;
| [[#Omnibug | Omnibug]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#Page_Speed | Page Speed]]&lt;br /&gt;
| [[#Pixel_Perfect | Pixel Perfect]]&lt;br /&gt;
| [[#selectbug | selectbug]]&lt;br /&gt;
| [[#Widerbug | Widerbug]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#XRefresh | XRefresh]]&lt;br /&gt;
| [[#YSlow | YSlow]]&lt;br /&gt;
| [[#ZikulaBug | ZikulaBug]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Are you an author of a new extension for Firebug and want us to update the page? Just open a new issue on Firebug [http://code.google.com/p/fbug/issues/list?start=0 issue list].''&lt;br /&gt;
&lt;br /&gt;
== Creating Extensions ==&lt;br /&gt;
&lt;br /&gt;
* See [[Firebug Internals]]&lt;br /&gt;
* [[Extension Installation Error Codes]]&lt;br /&gt;
&lt;br /&gt;
== Existing Extensions ==&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
==== Firecookie ====&lt;br /&gt;
[[Image:Firebug-extlist-firecookie.png|thumb|400px|Firecookie]]&lt;br /&gt;
&lt;br /&gt;
Firecookie is a an extension for Firebug that allows to view, manage and debug cookies in your browser. Apart from all the other cookie managers and viewers available as Firefox extensions, this one is made as an extension for Firebug. This means that web developers have the functionality accessible within the familiar Firebug's UI.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.janodvarko.cz/firecookie website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/6683 Mozilla Addons] site&lt;br /&gt;
* Get the [http://code.google.com/p/firecookie/source/checkout source code] (Firebug's BSD-style license)&lt;br /&gt;
* Report an [http://code.google.com/p/firecookie/ issue]&lt;br /&gt;
&lt;br /&gt;
Author: [http://www.softwareishard.com/blog/about/ Jan Odvarko]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Crossfire ====&lt;br /&gt;
[[Crossfire]] is a Firebug extension which implements a JSON protocol to allow remote clients (like an IDE or code editor) to connect to Firebug. &lt;br /&gt;
&lt;br /&gt;
* Read more about [[Crossfire]]&lt;br /&gt;
* Download from [http://getfirebug.com/releases/crossfire/ getfirebug.com]&lt;br /&gt;
* Get the [http://code.google.com/p/fbug/source/browse/#svn%2Fextensions%2Fcrossfire%2Fbranches source code] (Firebug's BSD-style license)&lt;br /&gt;
* Report an [http://code.google.com/p/fbug/ issue]&lt;br /&gt;
&lt;br /&gt;
Author: Michael G. Collins, FWG&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FireStarter ====&lt;br /&gt;
FireStarter is a Firebug extension that extends Firebug's activation model with advanced features.&lt;br /&gt;
&lt;br /&gt;
* Download from [http://getfirebug.com/releases/firestarter/ getfirebug.com]&lt;br /&gt;
* Get the [http://code.google.com/p/fbug/source/browse/#svn%2Ffirestarter%2Fbranches source code] (Firebug's BSD-style license)&lt;br /&gt;
* Report an [http://code.google.com/p/fbug/issues/list issue]&lt;br /&gt;
* Ask a question in the [http://groups.google.com/group/firebug news group]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Drupal For Firebug ====&lt;br /&gt;
[[Image:Firebug-extlist-drupalforfirebug.png|thumb|400px|Drupal For Firebug]]&lt;br /&gt;
&lt;br /&gt;
Drupal for Firebug extends Firebug to provide Drupal specific debugging and&lt;br /&gt;
status messages to help with Drupal development. &lt;br /&gt;
&lt;br /&gt;
* Visit [http://drupal.org/project/drupalforfirebug website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/8370 Mozilla Add-ons] site.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Firediff ====&lt;br /&gt;
[[Image:Firebug-extlist-firediff.png|thumb|400px|Firediff]]&lt;br /&gt;
&lt;br /&gt;
Firediff is a Firebug extension whose goal is to provide additional insight into the changes that are being made to the components of the page. Firediff currently requires a recent build of Firebug, with a strict requirement of at least version 1.4.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.incaseofstairs.com/firediff/ website]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FireFile ====&lt;br /&gt;
FireFile is a Firebug extension to save CSS files edited with Firebug to your web server.  This makes Firebug the first CSS editor with live preview and remote saving, which enables ultra fast web design.&lt;br /&gt;
&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/52365/ Mozilla Add-ons] site&lt;br /&gt;
* See [https://github.com/tobiasstrebitzer/FireFile/wiki FireFile's github wiki] or &amp;lt;del&amp;gt;[http://www.strebitzer.at/projects/firefile/docs/ more info]&amp;lt;/del&amp;gt; (broken link: server not found)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== cssUpdater ====&lt;br /&gt;
[[Image:Firebug-extlist-cssupdater.png|thumb|400px|cssUpdater]]&lt;br /&gt;
&lt;br /&gt;
cssUpdater lets you live sync and save your Firebug CSS changes with one click. So when you reload your site, your layout is preserved.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.cssupdater.com/ website]&lt;br /&gt;
* Download from [http://www.cssupdater.com/install cssupdater.com] or from [https://addons.mozilla.org/en-US/firefox/addon/cssupdater/ Mozilla Add-ons] site&lt;br /&gt;
* Report an [http://www.cssupdater.com/disqus issue]&lt;br /&gt;
&lt;br /&gt;
Author: Johan Andersson&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Firefocus ====&lt;br /&gt;
[[Image:Firebug-extlist-firefocus.png|thumb|400px|Firefocus]]&lt;br /&gt;
&lt;br /&gt;
Firefocus is a simple Firebug extension that tracks the element that currently has focus. Its primary purpose is to assist the debugging of advanced keyboard implementations. Firefocus requires Firebug 1.4 or later.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.incaseofstairs.com/firefocus/ website]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FormBug ====&lt;br /&gt;
FormBug simulates HTML form fill-in and serialization as an aid to testing form-intensive sites.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://home.peteresnyder.com/projects/formbug website]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== XRefresh ====&lt;br /&gt;
[[Image:Firebug-extlist-xrefresh.png|thumb|400px|XRefresh]]&lt;br /&gt;
&lt;br /&gt;
XRefresh can refresh browser as you modify source files. This is especially usefull for editing CSS files on a development machine with two monitors. When you hit CTRL+S (or whatever key for save), XRefresh will detect it and refresh the web page for you.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://xrefresh.binaryage.com/ website]&lt;br /&gt;
* Download from [https://github.com/darwin/xrefresh/downloads github]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Omnibug ====&lt;br /&gt;
[[Image:Firebug-extlist-omnibug.png|thumb|400px|Omnibug]]&lt;br /&gt;
&lt;br /&gt;
Omnibug is a plugin for Firebug to ease developing web metrics implementations. Each outgoing request (sent by the browser) is checked for a pattern; if a match occurs, the URL is displayed in a Firebug panel, and decoded to show the details of the request. In addition, requests can be logged to the filesystem.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.rosssimpson.com/dev/omnibug.html website]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Firebug Paint Events ====&lt;br /&gt;
[[Image:FirebugPaintEvents.png|thumb|400px|Firebug Paint Events]]&lt;br /&gt;
&lt;br /&gt;
Firebug Paint Events allows to view details of MozAfterPaint events, using Firebug. &lt;br /&gt;
&lt;br /&gt;
* Visit [http://kylescholz.com/blog/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/9620 Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Deadbug ====&lt;br /&gt;
Deadbug modifies the Firebug status bar icon to change to an image of an upside down (i.e. 'dead') bug when Firebug is turned off.  This allows people who are colorblind or have low-contrast displays to easily tell whether Firebug is active.&lt;br /&gt;
&lt;br /&gt;
* [[File:Fb_dead_logo1_transparent.png]] Dead bug icon designed by Kara Rawson.&lt;br /&gt;
* [http://collinsmichaelg.me/deadbug-2.0.xpi Download]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Adobe BrowserLab ====&lt;br /&gt;
[[Image:Adobe-browserlab-for-firebug.png|thumb|400px|Adobe BrowserLab]]&lt;br /&gt;
&lt;br /&gt;
Launch Adobe BrowserLab directly from Firebug, to preview temporary changes you’ve made using Firebug. BrowserLab generates screenshots of your pages (public or behind a firewall) in multiple browsers.&lt;br /&gt;
&lt;br /&gt;
* Visit [https://browserlab.adobe.com/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/231196/ Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== ConsoleExport ====&lt;br /&gt;
[[Image:Console-export.png|thumb|400px|Console Export]]&lt;br /&gt;
&lt;br /&gt;
ConsoleExport is a Firebug extension that allows exporting logs from the [[Console Panel]]. Once the extension is installed there is a new Export button available in the Console Panel toolbar.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.softwareishard.com/blog/consoleexport/ home page]&lt;br /&gt;
* Download from [http://www.softwareishard.com/blog/consoleexport/ softwareishard.com]&lt;br /&gt;
* Author: [http://www.janodvarko.cz/ Jan Odvarko]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== selectbug ====&lt;br /&gt;
[[Image:Selectbug.png|thumb|400px|selectbug]]&lt;br /&gt;
&lt;br /&gt;
selectbug enhances the [[CSS Panel]] by a Side Panel, that shows all nodes, to which the selected rule was applied.&lt;br /&gt;
&lt;br /&gt;
* Download from [http://getfirebug.com/releases/selectbug/ getfirebug.com]&lt;br /&gt;
* Get the [http://code.google.com/p/fbug/source/browse/#svn%2Fextensions%2Fselectbug%2Fbranches source code]&lt;br /&gt;
* Author: [[User:Johnjbarton|John J. Barton]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UI Enhancements ===&lt;br /&gt;
&lt;br /&gt;
==== Acebug ====&lt;br /&gt;
[[Image:Firebug-extlist-acebug.png|thumb|400px|Acebug]]&lt;br /&gt;
&lt;br /&gt;
Acebug is a Firefox add-on that integrates with Firebug is a simple Firebug extension that brings some of the awesome features of the Ajax.org Cloud9 Editor (Ace) to Firebug's large command line.&lt;br /&gt;
&lt;br /&gt;
'''Features'''&lt;br /&gt;
* Syntax Highlighting&lt;br /&gt;
* Auto indentation and outdent&lt;br /&gt;
* Highlight matching parentheses&lt;br /&gt;
* Load from file&lt;br /&gt;
* Save to file&lt;br /&gt;
* Execute selection&lt;br /&gt;
* Stream Comment&lt;br /&gt;
&lt;br /&gt;
'''We also plan on adding a bunch of new features to Acebug in the future'''&lt;br /&gt;
* Validate as you type&lt;br /&gt;
* Wordwrap&lt;br /&gt;
* Auto-completion&lt;br /&gt;
* Fully customizable key bindings including VI and Emacs modes&lt;br /&gt;
* Themes (TextMate themes can be imported)&lt;br /&gt;
* Display hidden characters&lt;br /&gt;
* Integrate with the script panel so that the whole panel works with your chosen syntax highlighting when debugging&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* Visit [http://www.msi-stuff.com/acebug/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/de/firefox/addon/acebug/ Mozilla Add-ons] site&lt;br /&gt;
* Get the source from [https://github.com/MikeRatcliffe/Acebug github]&lt;br /&gt;
* Use the [https://github.com/MikeRatcliffe/Acebug/issues issues list] to report an issue&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== CodeBurner ====&lt;br /&gt;
[[Image:CodeBurnerForFirebug.png|thumb|400px|CodeBurner]]&lt;br /&gt;
&lt;br /&gt;
CodeBurner is a Firefox add-on that integrates with Firebug, to extend it with reference material for HTML and CSS. The extension's core functionality is centered around a new Reference panel, which contains a search tool for looking up HTML elements, attributes, and CSS properties. The extension also hooks into context-menus in the HTML and CSS panels, the DOM crumbtrail, and the Inspector, adding options to look up a selected item (ie. search for it in the Reference panel) or to view a code example.&lt;br /&gt;
&lt;br /&gt;
Author: [http://www.sitepoint.com/ SitePoint] ([https://addons.mozilla.org/en-US/firefox/addon/10273 Download])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Firebug Autocompleter ====&lt;br /&gt;
[[Image:Firebug_Autocompleter.png|thumb|400px|Firebug Autocompleter]]&lt;br /&gt;
&lt;br /&gt;
Firebug Autocompleter adds an auto-completion to Firebug's [[Console Panel#Command Editor|Command Editor]], which can be toggled on and off.&lt;br /&gt;
&lt;br /&gt;
* Download from [https://addons.mozilla.org/de/firefox/addon/firebug-autocompleter/ Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
Author: yamapikarya&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Firefinder ====&lt;br /&gt;
[[Image:Firebug-extlist-firefinder.png|thumb|400px|Firefinder]]&lt;br /&gt;
&lt;br /&gt;
Firefinder is an extension to Firebug and offers the functionality to, in a quick way, find HTML elements matching chosen CSS selector(s) or XPath expression. It allows you to instantly test your CSS selectors in the page while seeing the content at the same time, and matching elements will be highlighted.&lt;br /&gt;
&lt;br /&gt;
View the results and then share them with a friend via the FriendlyFire feature, or click Inspect to go to the corresponding element in Firebug's HTML tab.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://robertnyman.com/firefinder/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/firefox/addon/11905 Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Firequark ====&lt;br /&gt;
[[Image:Firebug-extlist-firequark.png|thumb|400px|Firequark]]&lt;br /&gt;
&lt;br /&gt;
Firequark is an extension to Firebug to aid the process of HTML Screen Scraping. Firequark automatically extracts css selector for a single or multiple html node(s) from a web page using Firebug (a web development plugin for Firefox). The css selector generated can be given as an input to html screen scrapers like Scrapi to extract information. Firequark is built to unleash the power of css selector for use of html screen scraping.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.quarkruby.com/2007/9/5/firequark-quick-html-screen-scraping website]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Pixel Perfect ====&lt;br /&gt;
[[Image:Firebug-extlist-pixelperfect-thumbnail.png|thumb|400px|Pixel Perfect]]&lt;br /&gt;
&lt;br /&gt;
Pixel Perfect is a firebug extension that allows web developers to easily overlay a web composition over top of the developed html.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.pixelperfectplugin.com/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/7943 Mozilla Add-ons] site&lt;br /&gt;
* Report an [https://github.com/openhouseconcept/PixelPerfect/issues issue]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FireRainbow ====&lt;br /&gt;
[[Image:Firebug-extlist-firerainbow.png|thumb|400px|FireRainbow]]&lt;br /&gt;
&lt;br /&gt;
FireRainbow brings Javascript syntax highlighting to Firebug.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://firerainbow.binaryage.com/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/9603 Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
Author: Antonin Hildebrand&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Widerbug ====&lt;br /&gt;
[[Image:Firebug-extlist-widerbug.png|thumb|400px|Widerbug]]&lt;br /&gt;
&lt;br /&gt;
A modified version of Firebug optimized for widescreen monitors.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.command-tab.com/2008/01/19/widerbug-widescreen-firebug/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/13135 Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Firepicker ====&lt;br /&gt;
[[Image:Firebug-extlist-firepicker.png|thumb|400px|Firepicker]]&lt;br /&gt;
&lt;br /&gt;
Firepicker automatically adds color picker to Firebug's inline CSS editor.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://thedarkone.github.com/firepicker website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/15032 Mozilla Add-ons] site (experimental)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FireSass ====&lt;br /&gt;
FireSass allows Firebug to display the original Sass filename and line number of Sass-generated CSS styles.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://sass-lang.com/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/103988/ Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FireStylus ====&lt;br /&gt;
[[Image:FireStylus.png|thumb|400px|FireStylus]]&lt;br /&gt;
&lt;br /&gt;
FireStylus is a Firebug extension that makes Firebug display the Stylus filename and line numbers of the Stylus-generated CSS styles rather than those of the generated CSS.&lt;br /&gt;
&lt;br /&gt;
* Visit [https://github.com/parallel/firestylus website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/firestylus-for-firebug/ Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
Author: Julien Kernec'h&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Arboreal ====&lt;br /&gt;
[[Image:Arboreal.wiki.png|thumb|400px|Arboreal]]&lt;br /&gt;
&lt;br /&gt;
Arboreal is a Firebug extension for DOM tree visualization. &lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.alexspengler.de/arboreal/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/228373/ Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FirePath ====&lt;br /&gt;
[[File:Firepath.png|thumb|400px|FirePath]]&lt;br /&gt;
&lt;br /&gt;
FirePath is a Firebug extension that adds a development tool to edit, inspect and generate XPath 1.0 expressions and CSS 3 selectors.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://code.google.com/p/firepath/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/11900/ Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
&lt;br /&gt;
==== Chromebug ====&lt;br /&gt;
[[Image:Firebug-extlist-chromebug.png|thumb|400px|Chromebug]]&lt;br /&gt;
&lt;br /&gt;
[[Chromebug]] is Firebug for XUL applications, especially Firefox extensions. We use Chromebug to debug Firebug!  &lt;br /&gt;
* [[Chromebug User Guide]]&lt;br /&gt;
* Requires Firebug 1.5&lt;br /&gt;
* Works on Firefox 3.0 and later&lt;br /&gt;
* Newsgroup: [http://groups.google.com/group/mozilla.addons.chromebug/topics mozilla.addons.chromebug]&lt;br /&gt;
        &lt;br /&gt;
* Get [https://code.google.com/p/fbug/source/browse/#svn/chromebug/branches source code]&lt;br /&gt;
&lt;br /&gt;
Author: John J. Barton ([http://getfirebug.com/releases/chromebug/ Download])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Eventbug ====&lt;br /&gt;
[[Image:Eventbug.png|thumb|400px|Eventbug]]&lt;br /&gt;
&lt;br /&gt;
Eventbug is a Firebug extension that lists all of the event handlers on the page grouped by event type (see a [http://www.softwareishard.com/blog/firebug/eventbug-alpha-released/ blog post]).&lt;br /&gt;
&lt;br /&gt;
* The [https://github.com/firebug/eventbug source code] has Firebug's BSD-style license.&lt;br /&gt;
* Download from [http://getfirebug.com/releases/eventbug/ getfirebug.com]&lt;br /&gt;
* Use Firebug's [http://code.google.com/p/fbug/issues/list issue tracker] to report an issue.&lt;br /&gt;
* Use Firebug's [http://groups.google.com/group/firebug news group] to ask a question.&lt;br /&gt;
&lt;br /&gt;
Author: John J. Barton, Jan Odvarko ([http://getfirebug.com/releases/eventbug/ Download])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Firebug Code Coverage ====&lt;br /&gt;
[[Image:Firebug-extlist-codecoverage-thumbnail.png|thumb|400px|Firebug Code Coverage]]&lt;br /&gt;
&lt;br /&gt;
Firebug Code Coverage adds entry function code coverage for JavaScript code. Adds a button next to the Profiler in Firebug.&lt;br /&gt;
&lt;br /&gt;
Author: Zach Leatherman, download from Mozilla [https://addons.mozilla.org/en-US/firefox/addon/4837 Add-ons site] (experimental)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code Coverage for Firebug This Firebug extension is used to report Javascript code coverage. Zach's extension was migrated to Firebug 1.6/Firefox 3.6&lt;br /&gt;
&lt;br /&gt;
Author: Jun Ma, download from Mozilla [https://addons.mozilla.org/en-US/firefox/addon/code-coverage-v2-for-firebug/ Add-ons site] (experimental)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FirePHP ====&lt;br /&gt;
[[Image:Firebug-extlist-firephp-thumbnail.png|thumb|400px|FirePHP]]&lt;br /&gt;
&lt;br /&gt;
''FirePHP'' enables you to print to your Firebug Console using a simple PHP function call. All data is sent via a set of X-FirePHP-Data response headers. This means that the debugging data will not interfere with the content on your page. Thus FirePHP is ideally suited for AJAX development.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.firephp.org/ website]&lt;br /&gt;
* Report an [http://code.google.com/p/firephp/ issue]&lt;br /&gt;
* Join [http://groups.google.com/group/FirePHP FirePHP group]&lt;br /&gt;
&lt;br /&gt;
Author: Christoph Dorn, download from [https://addons.mozilla.org/en-US/firefox/addon/6149 Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FireFlow ====&lt;br /&gt;
[[Image:Firebug-extlist-fireflow.png|thumb|400px|FireFlow]]&lt;br /&gt;
&lt;br /&gt;
''FireFlow'' uses the [https://developer.mozilla.org/en/Code_snippets/JavaScript_Debugger_Service JSD] to get method call callbacks and logs them in a tree format. It supports searching and adding filters on card.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://blog.imaginea.com/fireflow/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/fireflow/ Mozilla Addons] site&lt;br /&gt;
&lt;br /&gt;
Author: Apurba Nath&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FireQuery ====&lt;br /&gt;
[[Image:Firebug-extlist-firequery.png|thumb|400px|FireQuery]]&lt;br /&gt;
&lt;br /&gt;
''FireQuery'' adds a collection of jQuery-related enhancements to Firebug. Recommended for all jQuery developers.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://firequery.binaryage.com/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/12632 Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
Author: Antonin Hildebrand&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Javascript Deminifier ====&lt;br /&gt;
[[Image:JavascriptDeminifier.png|thumb|400px|Javascript Deminifier]]&lt;br /&gt;
&lt;br /&gt;
''Javascript Deminifier'' will deminify javascript before it is downloaded. It is actually not a Firebug extension, because you can also use it with other debuggers.&lt;br /&gt;
&lt;br /&gt;
The plugin uses the algorithm from [http://jsbeautifier.org/ jsbeautifier.org] to beautify JavaScript.&lt;br /&gt;
&lt;br /&gt;
* Visit [https://github.com/benmmurphy/jsdeminifier_xpi/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/javascript-deminifier/ Mozilla Addons] site&lt;br /&gt;
* Report an [https://github.com/benmmurphy/jsdeminifier_xpi/issues issue]&lt;br /&gt;
&lt;br /&gt;
Author: Ben Murphy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== LiveCoder ====&lt;br /&gt;
[[Image:Firebug-extlist-livecoder-thumbnail.png|thumb|400px|LiveCoder]]&lt;br /&gt;
&lt;br /&gt;
''LiveCoder'' lets you poke at the browser's DOM, just like Firebug. But LiveCoder also lets you examine Firebug itself. In addition to examining the DOM, you can alter it including changing functions. This is a great way to debug your code and test fixes more quickly.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://getlivecoder.com/ website]&lt;br /&gt;
* [http://getlivecoder.com/livecoder.xpi/ Download.] [getlivecoder.com]  (''experimental'')&lt;br /&gt;
Author: Steve Souders. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Firesymfony ====&lt;br /&gt;
[[Image:Firebug-extlist-firesymfony.png|thumb|400px|Firesymfony]]&lt;br /&gt;
&lt;br /&gt;
''Firesymfony'' integrates debugging support for the Symfony PHP development framework in to Firebug.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.firesymfony.org/website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/9096/ Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== ColdFire ====&lt;br /&gt;
[[Image:Firebug-extlist-coldfire.png|thumb|400px|ColdFire]]&lt;br /&gt;
&lt;br /&gt;
''ColdFire'' is an extension to Firebug which displays ColdFusion debugging information in a Firebug tab as opposed to the bottom of the page. Because ColdFire sends debugging data to the browser via custom HTTP headers it does not break CSS page layouts and works well with AJAX and Flash Remoting requests.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://coldfire.riaforge.org/ website]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FirePython ====&lt;br /&gt;
[[Image:Firebug-extlist-firepython.png|thumb|400px|FirePython]]&lt;br /&gt;
&lt;br /&gt;
''FirePython'' enables you to debug your application's server side Python code from within your browser. FirePython is a server-side Python library, which hooks into standard Python logging module and sends logging events to a client-side using a Firefox browser extension called [https://addons.mozilla.org/en-US/firefox/addon/11090 FireLogger].&lt;br /&gt;
&lt;br /&gt;
* Visit [http://firepython.binaryage.com/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/11090 Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FireAtlas ====&lt;br /&gt;
[[Image:Firebug-extlist-fireatlas.png|thumb|400px|FireAtlas]]&lt;br /&gt;
&lt;br /&gt;
''FireAtlas'' is an extension to Firebug dedicated to [http://www.asp.net/ajax/ ASP.NET AJAX]debugging. This extension will provide you with useful services when developing ASP.NET AJAX web sites:&lt;br /&gt;
&lt;br /&gt;
* PageRequestManager events tracing&lt;br /&gt;
* WebService calls tracing and inspection&lt;br /&gt;
* Partial Update inspection within Firebug Net Panel&lt;br /&gt;
* Application components listing&lt;br /&gt;
&lt;br /&gt;
* Visit [http://fireatlas.chesnaistechnologies.com/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/12121 Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== AMF Explorer ====&lt;br /&gt;
[[Image:Firebug-extlist-amfexplorer-thumbnail.png|thumb|400px|AMF Explorer]]&lt;br /&gt;
&lt;br /&gt;
''AMF Explorer'' is based on the JSON Explorer and XML Explorer features of Firebug, AMF Explorer allows web developers to view deserialized AMF messages in Firebug's Net panel.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://amfexplorer.riaforge.org/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/78928 Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FireLinkReport ====&lt;br /&gt;
[[Image:Firebug-extlist-firelinkreport-thumbnail.png|thumb|400px|FireLinkReport]]&lt;br /&gt;
&lt;br /&gt;
''FireLinkReport'' allows viewing all links on the currently open page.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.softwarecocktail.com/projects/firelinkreport/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/58834 Mozilla Add-ons] site (experimental)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Flashbug ====&lt;br /&gt;
[[Image:Firebug-extlist-flashbug.png|thumb|400px|Flashbug]]&lt;br /&gt;
&lt;br /&gt;
Flashbug is a Firebug extension for Flash. It displays all the running .SWF file trace output and requires Flash Player Debugger to work properly.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://blog.coursevector.com/flashbug/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/14465 Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
Author: [http://coursevector.com/ Gabriel Mariani]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Closure Inspector ====&lt;br /&gt;
A development extension to Firebug for working with Closure Library and Closure Compiler &lt;br /&gt;
&lt;br /&gt;
* Visit [http://code.google.com/p/closure-inspector/ website]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Illuminations for Developers ====&lt;br /&gt;
[[Image:Illumination.png|thumb|400px|Illumination]]&lt;br /&gt;
&lt;br /&gt;
''Illuminations for Developers'' is a tool to help you develop web applications by investing Firebug with the knowledge of your JavaScript framework and your workflow with it.&lt;br /&gt;
* Requires Firebug 1.6 or later&lt;br /&gt;
* Works on Firefox 3.6 and later&lt;br /&gt;
* Visit [http://www.illuminations-for-developers.com/ website]&lt;br /&gt;
* Supports ExtJS 2.x, 3.x, 4.x, and Sencha Touch&lt;br /&gt;
* Preliminary support for Dojo 1.5, SproutCore, YUI3, Closure Lib, qooXdoo, and jQuery UI&lt;br /&gt;
&lt;br /&gt;
Author: Steven Roussey ([https://addons.mozilla.org/en-US/firefox/addon/illuminations-for-developers/ Mozilla Add-ons]) '''[https://addons.mozilla.org/firefox/downloads/latest/247486/addon-247486-latest.xpi?src=external-Firebug-Wiki Download]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Dojo Firebug Extension ====&lt;br /&gt;
[[Image:Ddt-presentation.PNG|thumb|400px|Dojo Firebug Extension]]&lt;br /&gt;
&lt;br /&gt;
Easy access to Dojo features: list dijit registry, and inspect visual widgets, view and breakpoint connections and subscriptions.&lt;br /&gt;
&lt;br /&gt;
* Works on Firefox 3.6 and later&lt;br /&gt;
* Requires Firebug 1.6 (preferred Firebug 1.7+)&lt;br /&gt;
* Read the [[DojoFirebugExtension Reference Guide|Documentation]]&lt;br /&gt;
* Download from [https://getfirebug.com/releases/dojofirebugextension/ getfirebug.com]&lt;br /&gt;
* Get the [https://github.com/patricioreyna/dojofirebugextension source code] (Firebug's BSD-style license)&lt;br /&gt;
* Report an [http://code.google.com/p/fbug/issues/list issue]&lt;br /&gt;
&lt;br /&gt;
Authors: Patricio Reyna Almandos and Fernando Gomez&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ZikulaBug ====&lt;br /&gt;
[[Image:ZikulaBug.png|thumb|400px|ZikulaBug]]&lt;br /&gt;
&lt;br /&gt;
ZikulaBug is a Firebug extension, which provides a friendly interface for Zikula's DebugToolbar. It allows to browse Zikula debug data grouped in eight tabs: General, Configuration, SQL, Templates, Function Executions, Log Console, HTTP request and Settings.&lt;br /&gt;
&lt;br /&gt;
* Visit [https://github.com/zikula/ZikulaBug/wiki website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/zikulabug/ Mozilla Addons] site&lt;br /&gt;
&lt;br /&gt;
Author: Paweł Preneta&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== ConsoleML ====&lt;br /&gt;
[[Image:ConsoleMLLogo.png|thumb||ConsoleML]]&lt;br /&gt;
[[Image:ConsoleML.png|thumb|400px|ConsoleML]]&lt;br /&gt;
&lt;br /&gt;
''ConsoleML'' is an extension to Firebug which displays MarkLogic logging information in Firefox Firebug.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://sirmasolutions.com/index.php/products/ml-firefox-console website]&lt;br /&gt;
* Download from [http://sirmasolutions.com/index.php/products/ml-firefox-console Sirma Solutions] site&lt;br /&gt;
&lt;br /&gt;
Features:&lt;br /&gt;
* Enables you to debug your application's server-side MarkLogic code from within your browser.&lt;br /&gt;
* Works with a build-in MarkLogic logging module. It does not affect page layout and works well with AJAX Remoting requests.&lt;br /&gt;
* Reads the MarkLogic Log file and sends logging events to client-side using a Firefox browser extension.&lt;br /&gt;
* Gives you an opportunity to save a part of the log files.&lt;br /&gt;
* Displays local and remote logs.&lt;br /&gt;
* Currently shows debugging information for all MarkLogic log levels: Finest, Finer, Fine, Debug, Config, Info Notice, Warning, Error, Critical, Alert, Emergency&lt;br /&gt;
* Offers numerous configuration options for log levels and filters to limit the displayed log to a desired set of options.&lt;br /&gt;
&lt;br /&gt;
Author: SirmaSolutions&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=== Performance ===&lt;br /&gt;
&lt;br /&gt;
==== YSlow ====&lt;br /&gt;
[[Image:Firebug-extlist-yslow-thumbnail.png|thumb|400px|YSlow]]&lt;br /&gt;
&lt;br /&gt;
''YSlow'' analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. YSlow is a Firefox add-on integrated with the Firebug web development tool. YSlow grades web page based on one of three predefined ruleset or a user-defined ruleset. It offers suggestions for improving the page's performance, summarizes the page's components, displays statistics about the page, and provides tools for performance analysis, including Smush.it™ and JSLint.&lt;br /&gt;
&lt;br /&gt;
YSlow gives you:&lt;br /&gt;
* Performance report card&lt;br /&gt;
* HTTP/HTML summary&lt;br /&gt;
* List of components in the page&lt;br /&gt;
* Tools including JSLint&lt;br /&gt;
&lt;br /&gt;
* Visit [http://developer.yahoo.com/yslow/ website]&lt;br /&gt;
&lt;br /&gt;
Author: [http://developer.yahoo.com/yslow/ Yahoo, Inc.] ([https://addons.mozilla.org/en-US/firefox/addon/5369 Download])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== NetExport ====&lt;br /&gt;
''NetExport'' is a Firebug extension that allows exporting data from the Net panel.&lt;br /&gt;
&lt;br /&gt;
* Requires [https://addons.mozilla.org/en-US/firefox/addon/1843 Firebug 1.5]&lt;br /&gt;
* Uses [http://www.softwareishard.com/blog/firebug/http-archive-specification/ HTTP Archive] format for export.&lt;br /&gt;
* The extension appends a new '''Export button''' into Net panel's toolbar.&lt;br /&gt;
* The [http://code.google.com/p/fbug/source/browse/#svn/netexport/branches/ source code] has Firebug's BSD-style license.&lt;br /&gt;
* Use Firebug's [http://code.google.com/p/fbug/issues/list issue list] to report an issue.&lt;br /&gt;
* Use Firebug's [http://groups.google.com/group/firebug discussion group] to ask a question.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.softwareishard.com/blog/netexport/ website]&lt;br /&gt;
* Download from [http://getfirebug.com/releases/netexport/ getfirebug.com]&lt;br /&gt;
&lt;br /&gt;
Author: Jan Odvarko&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Net Panel History Overlay ====&lt;br /&gt;
[[Image:Firebug-extlist-history.png|thumb|400px|Net Panel History Overlay]]&lt;br /&gt;
&lt;br /&gt;
''Net Panel History Overlay'' adds history functionality to Firebug's [[Net Panel]].&lt;br /&gt;
&lt;br /&gt;
* Visit [http://digitalmihailo.blogspot.com/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/7189 Mozilla Add-ons] site (experimental)&lt;br /&gt;
&lt;br /&gt;
Author: Mihailo Lalevic&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Jiffy ====&lt;br /&gt;
[[Image:Firebug-extlist-jiffy-thumbnail.png|thumb|400px|Jiffy]]&lt;br /&gt;
&lt;br /&gt;
The ''Jiffy'' Firefox extension adds an additional panel to Firebug that provides a visual view of the Javascript time measurements captured by Jiffy-Web.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://billwscott.com/jiffyext/ website]&lt;br /&gt;
* Join [http://groups.google.com/group/jiffy-web Jiffy-Web group]&lt;br /&gt;
&lt;br /&gt;
Author: [http://looksgoodworkswell.blogspot.com/ Bill Scott] of [http://www.netflix.com/ NetFlix], download from [https://addons.mozilla.org/en-US/firefox/addon/7613 Mozilla Add-ons] site (experimental)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Inline Code Finder ====&lt;br /&gt;
[[Image:Firebug-extlist-inlinecodefinder.png|thumb|400px|Inline Code Finder]]&lt;br /&gt;
&lt;br /&gt;
''Inline Code Finder'' looks for any of these in a web page:&lt;br /&gt;
&lt;br /&gt;
* inline JavaScript events&lt;br /&gt;
* Inline style&lt;br /&gt;
* javascript: links&lt;br /&gt;
&lt;br /&gt;
The idea is to promote separation between content (HTML), presentation (CSS) and interaction (JavaScript) - especially the ideas and thinking behind the unobtrusive JavaScript approach.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://www.robertnyman.com/inline-code-finder/ website]&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/9641 Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
Author: Robert Nyman&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== CSS Usage ====&lt;br /&gt;
[[Image:Firebug-extlist-cssusage.png|thumb|400px|CSS Usage]]&lt;br /&gt;
&lt;br /&gt;
With ''CSS Usage'' you can look at your CSS rules and see which ones of them are actually used on your website and which aren't.&lt;br /&gt;
&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/10704 Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Log to NetPanel ====&lt;br /&gt;
[[Image:Firebug-extlist-logtonetpanel.png|thumb|400px|Log to NetPanel]]&lt;br /&gt;
&lt;br /&gt;
''Log to NetPanel'' allows you to add markers to the Net panel from javascript. They appear as extra bars below the network downloads. That way, you can find out at what point in the download sequence specific javascript code is running. If you log twice with the same name, a bar will appear from the first to the second point in time.&lt;br /&gt;
&lt;br /&gt;
* Download from [http://code.google.com/p/log-to-net-panel/downloads/list Google Code]&lt;br /&gt;
* See [http://code.google.com/p/log-to-net-panel/ more info]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== Page Speed ====&lt;br /&gt;
''Page Speed'' is an open-source Firefox/Firebug Add-on. Webmasters and web developers can use Page Speed to evaluate the performance of their web pages and to get suggestions on how to improve them.&lt;br /&gt;
&lt;br /&gt;
* Visit [http://code.google.com/speed/page-speed/ website]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FireSpider ====&lt;br /&gt;
''FireSpider'' is a an extension for Firebug that can help you find broken or misleading urls and optimize your web page for search engines.&lt;br /&gt;
&lt;br /&gt;
* Download from [http://xrado.hopto.org/post/firespider-extension-for-firebug hopto.org]&lt;br /&gt;
  [NOTE: the link to the hopto.org site doesn't appear to be working, despite numerous references to it online.&lt;br /&gt;
   Try this link to the author's own site instead:  http://blog.xrado.si/post/firespider-extension-for-firebug .]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== FireFontFamily ====&lt;br /&gt;
[[Image:Firebug-extlist-firefontfamily.png|thumb|400px|FireFontFamily]]&lt;br /&gt;
''FireFontFamily'' highlights the rendered font-family inside the Style Side Panel&lt;br /&gt;
&lt;br /&gt;
* Download from [https://addons.mozilla.org/en-US/firefox/addon/111672/ Mozilla Add-ons] site&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==== FireEyes ====&lt;br /&gt;
[[Image:FireEyes.png|thumb|400px|FireFontFamily]]&lt;br /&gt;
''FireEyes'' is an unprecedented, nextgen web accessibility tool that ensures both static and dynamic content within a web portfolio are compliant with standards such as Section 508, WCAG 1.0, and WCAG 2.0. You can use another tool, but it won’t be fully JavaScript aware or handle event-based page content, like FireEyes.&lt;br /&gt;
&lt;br /&gt;
* Download from [http://www.deque.com/products/worldspace-fireeyes FireEyes] site&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-02T22:26:10Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Support for aliases when using multiple dojo versions on page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 11 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this (a hack if you want to call it that way).&lt;br /&gt;
To use it, you need to type about:config in Firefox address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need to explicitly remove the preference if you want to debug another page .&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues so far :-) &lt;br /&gt;
* You could use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-02T22:24:40Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 11 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Support for aliases when using multiple dojo versions on page==&lt;br /&gt;
For more info: http://dojotoolkit.org/reference-guide/1.7/quickstart/multiversion.html&lt;br /&gt;
&lt;br /&gt;
Starting from Dojo Firebug Extension v1.1.4.1 there is a new preference to support this (a hack if you want to call it that way).&lt;br /&gt;
To use it, you need to type about:config in Firefox address bar . Then look for a preference called &amp;quot;...extensions.firebug.dojofirebugextension.aliases&amp;quot;, and set it with a JSON value (using double quotes -- not single quotes) similar to this one: &lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;               &lt;br /&gt;
                 { &amp;quot;dojo&amp;quot; : &amp;quot;myDojo&amp;quot; , &amp;quot;dijit&amp;quot;:&amp;quot;myDijit&amp;quot;, &amp;quot;dojox&amp;quot;: &amp;quot;myDojox&amp;quot; } .&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues so far :-) &lt;br /&gt;
* You could use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-02T22:06:22Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* Download from:&lt;br /&gt;
** Releases can be found in Mozilla add-ons repository: https://addons.mozilla.org/en-US/firefox/addon/dojofirebugextension/&lt;br /&gt;
** Releases, alphas, and betas can be found in getfirebug server: http://getfirebug.com/releases/dojofirebugextension/&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 11 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues so far :-) &lt;br /&gt;
* You could use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-05-02T22:04:14Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9/10/11 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 11 with Firebug 1.9.x . Dojo extension v1.1.5a1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
* Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues so far :-) &lt;br /&gt;
* You could use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2012-01-20T22:45:33Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 and 7, plus Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8/9 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues so far :-) &lt;br /&gt;
* You could use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-12-26T23:53:23Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 and 7, plus Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8.0 with Firebug 1.9.x . Dojo extension v1.1.3+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues so far :-) &lt;br /&gt;
* You could use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-12-26T19:32:30Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 and 7, plus Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 8.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues so far :-) &lt;br /&gt;
* You could use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-11-19T21:11:11Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Known issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 and 7, plus Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues so far :-) &lt;br /&gt;
* You could use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-11-19T21:10:06Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 and 7, plus Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-11-19T21:08:32Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Intro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 and 7, plus Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 10/04/2011 Note: (FF 6/7 and Firebug 1.8.x) from time to time the dojo panel isn't displayed by Firebug (we won't know why yet) . To solve this , you need to disable the dojo extension (from the FF addons manager) , restart FF . Then re-enable the extension and restart FF one more time. That's all.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/File:Ddt-widget-selected-in-tree.PNG</id>
		<title>File:Ddt-widget-selected-in-tree.PNG</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/File:Ddt-widget-selected-in-tree.PNG"/>
				<updated>2011-10-21T23:50:51Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: uploaded a new version of &amp;amp;quot;File:Ddt-widget-selected-in-tree.PNG&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-10-21T23:46:47Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Side panels */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo. Then the extension's original code was contributed to the open source.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 and 7, plus Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 10/04/2011 Note: (FF 6/7 and Firebug 1.8.x) from time to time the dojo panel isn't displayed by Firebug (we won't know why yet) . To solve this , you need to disable the dojo extension (from the FF addons manager) , restart FF . Then re-enable the extension and restart FF one more time. That's all.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Widget Properties===&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-widgetprops-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/File:Ddt-widgetprops-side-panel.PNG</id>
		<title>File:Ddt-widgetprops-side-panel.PNG</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/File:Ddt-widgetprops-side-panel.PNG"/>
				<updated>2011-10-21T23:45:44Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/File:Ddt-subscriptions-side-panel.PNG</id>
		<title>File:Ddt-subscriptions-side-panel.PNG</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/File:Ddt-subscriptions-side-panel.PNG"/>
				<updated>2011-10-21T23:42:18Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: uploaded a new version of &amp;amp;quot;File:Ddt-subscriptions-side-panel.PNG&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/File:Ddt-connections-side-panel.PNG</id>
		<title>File:Ddt-connections-side-panel.PNG</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/File:Ddt-connections-side-panel.PNG"/>
				<updated>2011-10-21T23:40:55Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: uploaded a new version of &amp;amp;quot;File:Ddt-connections-side-panel.PNG&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/File:Ddt-info-side-panel.PNG</id>
		<title>File:Ddt-info-side-panel.PNG</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/File:Ddt-info-side-panel.PNG"/>
				<updated>2011-10-21T23:38:52Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: uploaded a new version of &amp;amp;quot;File:Ddt-info-side-panel.PNG&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/File:Ddt-presentation.PNG</id>
		<title>File:Ddt-presentation.PNG</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/File:Ddt-presentation.PNG"/>
				<updated>2011-10-21T23:29:05Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: uploaded a new version of &amp;amp;quot;File:Ddt-presentation.PNG&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dojo Firebug extension main panel&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-10-04T18:37:32Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo. Then the extension's original code was contributed to the open source.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 and 7, plus Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 10/04/2011 Note: (FF 6/7 and Firebug 1.8.x) from time to time the dojo panel isn't displayed by Firebug (we won't know why yet) . To solve this , you need to disable the dojo extension (from the FF addons manager) , restart FF . Then re-enable the extension and restart FF one more time. That's all.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-10-04T18:37:08Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo. Then the extension's original code was contributed to the open source.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 and 7, plus Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
* 10/04/2011 Note: (FF 6/7 and Firebug 1.8.x) from time to time the dojo panel isn't displayed by Firebug (we won't know why yet) . To solve this , you need to disable the dojo extension (from the FF addons manager) , restart FF . Then re-enable the extension and restart FF one more time. That's all.&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-10-04T18:33:42Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo. Then the extension's original code was contributed to the open source.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 , and Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 7.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-09-02T23:24:41Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo. Then the extension's original code was contributed to the open source.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 , and Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-09-01T21:32:03Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo. Then the extension's original code was contributed to the open source.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 , and Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* '''Compatibility table:'''&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder] (RE-TEST PENDING)&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-09-01T21:31:33Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo. Then the extension's original code was contributed to the open source.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 , and Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* Compatibility table:&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder] (RE-TEST PENDING)&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from [http://getfirebug.com/releases/dojofirebugextension/1.7/ 1.7 folder]&lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from [http://getfirebug.com/releases/dojofirebugextension/1.8/ 1.8 folder]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-09-01T21:30:07Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo. Then the extension's original code was contributed to the open source.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 download folder was tested with Firefox 6.0.1 , and Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 download folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* Compatibility table:&lt;br /&gt;
** Firefox 3.6 with Firebug 1.7.3 . Dojo Extension v1.0.x from 1.7 folder (RE-TEST PENDING)&lt;br /&gt;
** Firefox 4.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from 1.7 folder &lt;br /&gt;
** Firefox 5.0 with Firebug 1.7.3 . Dojo Extension v1.0.x from 1.7 folder &lt;br /&gt;
** Firefox 5.0 with Firebug 1.8.x . Dojo extension v1.1+ from 1.8 folder &lt;br /&gt;
** Firefox 6.0 with Firebug 1.8.x . Dojo extension v1.1+ from 1.8 folder&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-09-01T21:21:48Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo. Then the extension's original code was contributed to the open source.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.8 folder was tested with Firefox 6.0.1 , and Firebug 1.8.2 in Linux and Windows.&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-07-07T21:32:22Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */ - added new FF 5 compatibility message . Thanks Tylutki for letting us know about this missing info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo. Then the extension's original code was contributed to the open source.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 folder was tested with Firefox 4.0 and 4.0.1 , and Firefox 5 in Windows with Firebug 1.7.x.&lt;br /&gt;
* 07/07/2011 Note: if you previously installed the &amp;quot;dojofirebugextension-1.0.xpi&amp;quot; from this server and now you get a &amp;quot;not compatible with Firefox 5&amp;quot; error, please remove the extension and install it again (from http://getfirebug.com/releases/dojofirebugextension/1.7/dojofirebugextension-1.0.xpi). We updated the compatibility support but kept xpi version number.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-07-04T18:37:26Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Intro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo. Then the extension's original code was contributed to the open source.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 folder was tested with Firefox 4.0 and 4.0.1 with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-07-04T18:30:54Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Intro */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension started as an internal IBM initiative to help IBMers working with Dojo. IBM contributed the extension's original code to Firebug to contribute to the Dojo community efforts.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 folder was tested with Firefox 4.0 and 4.0.1 with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-06-20T22:07:03Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Authors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 folder was tested with Firefox 4.0 and 4.0.1 with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos (IBM Argentina)&lt;br /&gt;
* Fernando Gomez (IBM Argentina)&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-06-14T01:37:37Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 folder was tested with Firefox 4.0 and 4.0.1 with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension (more info here http://www.howtogeek.com/howto/internet/firefox/use-multiple-firefox-profiles-at-the-same-time/ and here http://support.mozilla.com/en-US/kb/Managing-profiles).&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos&lt;br /&gt;
* Fernando Gomez&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	<entry>
		<id>http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide</id>
		<title>DojoFirebugExtension Reference Guide</title>
		<link rel="alternate" type="text/html" href="http://getfirebug.com/wiki/index.php/DojoFirebugExtension_Reference_Guide"/>
				<updated>2011-06-14T01:11:33Z</updated>
		
		<summary type="html">&lt;p&gt;Patricioreyna: /* Tested platforms, Installation and other info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ddt-logo.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Intro==&lt;br /&gt;
Are you a dojo app developer? How many times did you find that having the chance to debug the HTML, DOM and also the javascript of your page was *great*, but at the same time you wanted to have a faster access to dojo specifics? Exactly...That was one of the motivations behind this Dojo Firebug extension.&lt;br /&gt;
&lt;br /&gt;
The idea of this extension is to provide easy access to some dojo concepts. Coding and debugging time can be reduced by having features to monitor dijits, access higher-level dojo concepts and specific dojo properties (instead of just DOM properties), see the available connections and subscriptions and be able to set breakpoints on those.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With this extension you can:&lt;br /&gt;
&lt;br /&gt;
* View all the widgets registered in the dijit registry (as a Tree or as a plain list)&lt;br /&gt;
** View their properties. For each widget you can also switch the view between &amp;quot;dojo specific properties&amp;quot; and &amp;quot;classic DOM properties&amp;quot;. For example, whether the widget's startup() method was already invoked or not.&lt;br /&gt;
** Highlight dojo widgets in the web page (when you mouse-over them).&lt;br /&gt;
** View detached widgets (widgets not yet attached to page).&lt;br /&gt;
* View information about the dojo version, dojo-config object, url modules of the loaded page, and the total number of widgets, connections and subscriptions (these numbers are automatically refreshed in the extension UI...useful to detect leaks).&lt;br /&gt;
* View all available connections and subscriptions (global to the app), and also connections and subscriptions associated to a &amp;quot;selected&amp;quot; object. You can filter the connections table to find some specific ones to debug.&lt;br /&gt;
* Set breakpoints to connections: in the connections's event, in the target method, and in the line where the connection was created (i.e. dojo.connect)&lt;br /&gt;
* Set breakpoints to subscriptions: in the target method and where the subscription was created.&lt;br /&gt;
* Open documentation associated to a dojo object.&lt;br /&gt;
&lt;br /&gt;
The extension is integrated with the Firebug inspector. You can right-click on a dijit element in the web page and it will be selected/inspected in the extension panels. You can also click the Firebug's inspect button from inside the extension panel and inspect only the dojo elements from your page.&lt;br /&gt;
&lt;br /&gt;
Also, several new visual representations were added to Firebug to better identify dojo objects in Firebug panels.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
The Dojo Firebug Extension is available from in the [http://getfirebug.com/releases/dojofirebugextension/ dojofirebugextension] folder at getfirebug.com. Pick version number folder to match your version of Firebug.&lt;br /&gt;
&lt;br /&gt;
==Tested platforms, Installation and other info==&lt;br /&gt;
&lt;br /&gt;
Latest version from 1.7 folder was tested with Firefox 4.0 and 4.0.1 with Firebug 1.7.x.&lt;br /&gt;
&lt;br /&gt;
* You need to '''enable Console and Script panels''' if you want this extension to work properly.&lt;br /&gt;
* You may probably want to create an extra profile in Firefox to try this extension&lt;br /&gt;
* The latest version of the extension will not work with Firebug 1.6.x&lt;br /&gt;
** if you want a version for Firebug 1.6.x please go to https://getfirebug.com/releases/dojofirebugextension/1.6/ , but keep in mind that version has fewer features. The recommended combination in this case is: FF 3.6.x + Firebug 1.6.x + this extension&lt;br /&gt;
* This extension WILL NOT WORK with Firebug 1.5.x&lt;br /&gt;
&lt;br /&gt;
==Main Panel==&lt;br /&gt;
&lt;br /&gt;
[[File:Ddt-presentation.PNG]]&lt;br /&gt;
&lt;br /&gt;
In this panel you can access:&lt;br /&gt;
* All Widgets : displays all available widgets in dijit registry. You can see the widgets as a Tree or as a plain list, by changing a setting in the main menu of the extension panel.&lt;br /&gt;
* All Connections: displays all registered connections as a Table.&lt;br /&gt;
* All Subscriptions: displays existent subscriptions (as a Tree).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are also some useful side panels at the right:&lt;br /&gt;
* Info side panel&lt;br /&gt;
* Connections and Subscriptions for a &amp;quot;selected&amp;quot; object&lt;br /&gt;
* DOM and HTML panels to show lower level info of the &amp;quot;selected&amp;quot; object&lt;br /&gt;
&lt;br /&gt;
===Widgets===&lt;br /&gt;
&lt;br /&gt;
The widgets view displays the available widgets in dijit registry. By default they are displayed in a Tree according to how they are placed in the web page. If you move the mouse pointer over the widgets, you will see them highlighted in the page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following 2 screnshots you will see a widget selected (in the extension panel) and the same widget highlighted in the web page.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree.PNG|Widget selected in panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widget-selected-in-tree-2.PNG|Widget highlighted in web page]]&lt;br /&gt;
&lt;br /&gt;
====Widgets as list====&lt;br /&gt;
There is also an option to display the widgets as a list (instead of tree). You can switch it in the extension's main menu.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-list.PNG|Widgets list]]&lt;br /&gt;
&lt;br /&gt;
====Diplaying properties====&lt;br /&gt;
Widgets can display highlevel info related to dojo, or you can just see all their DOM properties (you can change this behavior using the toggle button at the right of each widget)&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-highlevel-props.PNG|Dojo properties of a widget]]&lt;br /&gt;
&lt;br /&gt;
====Other widget options====&lt;br /&gt;
&lt;br /&gt;
This is how '''detached widgets''' look like in the panel:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-detached-widget.PNG|Detached widget]]&lt;br /&gt;
&lt;br /&gt;
'''Documentation links''' available for widgets:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-widgets-context-menu.PNG|Context menu for widgets]]&lt;br /&gt;
&lt;br /&gt;
===Connections panel===&lt;br /&gt;
&lt;br /&gt;
This extension collects information about connections made by dojo.connect and widget.connect methods. They are displayed in a table with the following columns: Object, Event, Context, and Method (trying to follow the names of the arguments of the dojo.connect method).&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-connections-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
====Filtering connections====&lt;br /&gt;
&lt;br /&gt;
You can enter a filtering criteria to display connections .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important:''' using a &amp;quot;count&amp;quot; filter with a small value will improve performance of the connections panel (e.g. Begin = 0, End = 50 , or Begin = -50, End = 0 if you want the last 50 connections created).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When writing a filter, you can use 3 fields: &amp;quot;Begin&amp;quot; , &amp;quot;End&amp;quot; , and &amp;quot;Filter&amp;quot; . Begin and End fields follow the rules from Array's slice method (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/slice).&lt;br /&gt;
&lt;br /&gt;
'''1.''' Begin: starting index (0 based) . You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''2.''' End : zero-based index at which to end filtering connections (not including &amp;quot;end&amp;quot;). You can use negative indexes too.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Filter: a filtering query . It currrently accepts 2 syntaxes:&lt;br /&gt;
&lt;br /&gt;
'''3.1.''' You can write a simple string (you can also enter perl regex as well as use a simpler form with * and ? wildcards) , that will be compared (regexp match) against connection's '''event''' and '''method''' attributes. For example: &lt;br /&gt;
  '''dojo*'''&lt;br /&gt;
&lt;br /&gt;
'''3.2.''' You can also write a filtering query following the rules from dojo.data.ItemFileReadStore , i.e. a query object (JSON notation) to filter by several fields at once. Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { event: '*dojo*' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { object: '*button*' , method: 'onClick' }&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 1:''' simpler syntax&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-filter-connections-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Picture 2:''' query object . &lt;br /&gt;
For this specific example the query was:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  { context: '*menu*', method:'from*'}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscriptions panel===&lt;br /&gt;
This view displays information about topics and subscriptions. Each flag represent a topic with its name in red. Each children represent the ''interested object'' and the ''method'' that will be executed.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-all-subscriptions-main-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Side panels==&lt;br /&gt;
&lt;br /&gt;
===Info===&lt;br /&gt;
Display information about dojo loaded in the web page&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-info-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Connections===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-connections-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Subscriptions===&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-subscriptions-side-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration of Firebug inspector and the dojo extension - Inspect in Dojo Panel==&lt;br /&gt;
&lt;br /&gt;
You can inspect any dijit by right-clicking in web page and choosing '''Inpect in Dojo panel'''&lt;br /&gt;
[[File:ddt-inspect-in-dojo-panel.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, you can use the Firebug Inspector tool (the arrow icon at the left) and choose any dijit in the web page. &lt;br /&gt;
When you use this option, dijits in web page will display a green border when ''mouseover''.&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-inspect-1.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakpoints==&lt;br /&gt;
&lt;br /&gt;
The extension allows you to add breakpoints to connections and subscriptions. You can:&lt;br /&gt;
* Break on Target execution&lt;br /&gt;
* Break on Event execution&lt;br /&gt;
* Break on ''connect place'' (or subscribe place) . The place where the dojo.connect was executed to create the connection ('''IMPORTANT:'''see performance note below).&lt;br /&gt;
&lt;br /&gt;
'''Performance note:''' app loading time will be increased '''4X''' when &amp;quot;Breakpoint on connect/subscribe place&amp;quot; is enabled.&lt;br /&gt;
&lt;br /&gt;
The following pictures show the idea:&lt;br /&gt;
&lt;br /&gt;
Picture 1 and 2: context menu for connections and those items checked&lt;br /&gt;
[[File:ddt-breakpoints-1.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-2.PNG]]&lt;br /&gt;
&lt;br /&gt;
Picture 3: Breakpoints listed in Firebug's Script panel (breakpoints sidepanel)&lt;br /&gt;
[[File:ddt-breakpoints-3.PNG]]&lt;br /&gt;
&lt;br /&gt;
Pictures 4 and 5: source code with breakpoints&lt;br /&gt;
[[File:ddt-breakpoints-4.PNG]]&lt;br /&gt;
[[File:ddt-breakpoints-5.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Tip: Debugging dojo source with Firebug 1.7 and Firefox 4==&lt;br /&gt;
Due to a problem with FF 4, when using a source build of dojo with FF 4 you won't be able to see filenames in the files dropdown list of Firebug's Script panel. Probably you will see entries like this: &lt;br /&gt;
  dojo.js/eval:eval(...&lt;br /&gt;
or like this:&lt;br /&gt;
[[File:Ddt-dojo-broken-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
But if you change 1 line in the dojo[eval] implementation you'll be able to see and debug dojo files again:&lt;br /&gt;
&lt;br /&gt;
[[File:ddt-dojo-16-files-dropdown.PNG]]&lt;br /&gt;
&lt;br /&gt;
You need to change the following file:&lt;br /&gt;
  dojo/_base/_loader/bootstrap.js&lt;br /&gt;
&lt;br /&gt;
and in the eval function implementation, replace this line:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
by this one:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  return eval(scriptFragment); 	// Object&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ending in something like this:&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
  	dojo[&amp;quot;eval&amp;quot;] = function(/*String*/ scriptFragment){&lt;br /&gt;
		//	summary:&lt;br /&gt;
		//		A legacy method created for use exclusively by internal Dojo methods. Do not use&lt;br /&gt;
		//		this method directly, the behavior of this eval will differ from the normal&lt;br /&gt;
		//		browser eval.&lt;br /&gt;
		//	description:&lt;br /&gt;
		//		Placed in a separate function to minimize size of trapped&lt;br /&gt;
		//		exceptions. Calling eval() directly from some other scope may&lt;br /&gt;
		//		complicate tracebacks on some platforms.&lt;br /&gt;
		//	returns:&lt;br /&gt;
		//		The result of the evaluation. Often `undefined`&lt;br /&gt;
		&lt;br /&gt;
		//return d.global.eval ? d.global.eval(scriptFragment) : eval(scriptFragment); 	// Object		&lt;br /&gt;
		return eval(scriptFragment); 	// Object&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is the list of known issues we know about of :-) &lt;br /&gt;
* Does not work with Firebug in a separate window&lt;br /&gt;
* You can use this extension with Firefox 3.6 (and Firebug 1.7!) but JS objects asociated to connections/subscriptions will contain another DOM property called '''x_dojoExtHashCode_'''. This may affect your application if it's coded using some '''foreach var in object''' loops.&lt;br /&gt;
** you can avoid that property by setting the Firefox preference '''extensions.firebug.dojofirebugextension.useHashCodes''' to '''false'''. (go to about:config page to set preferences) .&lt;br /&gt;
** Remember: you do not need to change anything if using FF 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Authors==&lt;br /&gt;
&lt;br /&gt;
* Patricio Reyna Almandos&lt;br /&gt;
* Fernando Gomez&lt;/div&gt;</summary>
		<author><name>Patricioreyna</name></author>	</entry>

	</feed>