Login Register

get toolbar width and height

I have created a toolbar and added buttons to it. After that I would like to get its width and height. I thought that would be an easy task but I have spent a long time searching and have yet to find anything that works. Can someone help me out?
Thanks
Mike

something like: var node =

something like:

var node = dijit.byId("thatToolbar").domNode;
var size = dojo.coords(node);
console.dir(size);

?

That might work. Firebug is

That might work. Firebug is telling me: "dijit.byId("navToolbar") is undefined"
Thanks
Mike

Hmm, maybe share a little

Hmm, maybe share a little code. If you toolbar has id="navToolbar" you should be fine, unless of course you are calling djit.byId() before addOnLoad fires.

Sure. js: dojo.addOnLoad(init

Sure. [edited for markup:]

js:

dojo.addOnLoad(init);
    function init() {

      //esriConfig.defaults.io.proxyUrl = "proxy.ashx";
      //esriConfig.defaults.io.alwaysUseProxy = false;

      map = new esri.Map("map");

      var dynamicMapServiceLayer = new esri.layers.ArcGISDynamicMapServiceLayer("http://server/rest/services/Monroe2/MapServer");
      map.addLayer(dynamicMapServiceLayer);
      esriConfig.defaults.map.zoomDuration = 1200; //time in milliseconds; default is 250
      esriConfig.defaults.map.zoomRate = 100; //refresh rate of zoom animation; default is 25
      esriConfig.defaults.map.slider = { right:"0px", top:"10px", width:null, height:"100px" };

      gsvc = new esri.tasks.GeometryService("http://server/rest/services/Geometry/GeometryServer");

      navToolbar = new esri.toolbars.Navigation(map);
      dojo.connect(navToolbar, "onExtentHistoryChange", extentHistoryChangeHandler);
      dojo.connect(map, "onExtentChange", showExtent);

      function extentHistoryChangeHandler() {
        dijit.byId("zoomprev").disabled = navToolbar.isFirstExtent();
        dijit.byId("zoomnext").disabled = navToolbar.isLastExtent();
      }
      //navToolbar.zoomToFullExtent();
      showLayerList();
    }

in my body:

<div id="navToolbar" dojoType="dijit.Toolbar">
            <div class="raphael" id="toolbar"></div>
            <div dojoType="dijit.form.Button" id="zoomin" iconClass="zoominIcon" onClick="zoomIn();">Zoom In</div>
            <div dojoType="dijit.form.Button" id="zoomout" iconClass="zoomoutIcon" onClick="zoomOut();">Zoom Out</div>
            <div dojoType="dijit.form.Button" id="zoomfullext" iconClass="zoomfullextIcon" onClick="zoomFull();">Full Extent</div>
            <div dojoType="dijit.form.Button" id="zoomprev" iconClass="zoomprevIcon" onClick="navToolbar.zoomToPrevExtent();">Prev Extent</div>
            <div dojoType="dijit.form.Button" id="zoomnext" iconClass="zoomnextIcon" onClick="navToolbar.zoomToNextExtent();">Next Extent</div>
            <div dojoType="dijit.form.Button" id="pan" iconClass="panIcon" onClick="pan();">Pan</div>
            <div dojoType="dijit.form.Button" id="deactivate" iconClass="deactivateIcon" onClick="navToolbar.deactivate();">Deactivate</div>
            <div dojoType="dijit.form.Button" id="parcelinfo" iconClass="parcelinfoIcon" onClick="parcelInfo();">Parcel Info</div>
            <div dojoType="dijit.form.Button" id="parcelsearch" iconClass="parcelsearchIcon" onClick="parcelSearch();">Parcel Search</div>
            <div dojoType="dijit.form.Button" id="cleargraphics" iconClass="clearIcon" onClick="map.graphics.clear();">Clear</div>
            <div dojoType="dijit.form.Button" id="printbutton" iconClass="printIcon" onClick="window.print();">Print Map</div>
          </div>
      <script type="text/javascript">
        var width = dojo.byId('navToolbar').offsetWidth;
        var height = dojo.byId('navToolbar').offsetHeight;
        var node = dijit.byId('navToolbar').domNode;
        var size = dojo.coords(node);
        console.dir(size);
    </script>

yep - so your dijit.byId("")

yep - so your dijit.byId("") and dojo.byid("") calls in that last script tag _should_ be failinging. If they aren't, its because the nodes exist in the dom above the script tag, and is a fluke. IE6 will likely blow up with those calls, violently. wrap them in an addOnLoad function:

dojo.addOnLoad(function(){
     var width = dojo.byId('navToolbar').offsetWidth;
        var height = dojo.byId('navToolbar').offsetHeight;
        var node = dijit.byId('navToolbar').domNode;
        var size = dojo.coords(node);
        console.dir(size);
});