Yes, by dojo popup I mean the widget, which runs off dojo. It's hard to keep terms straight when I have to keep switching APIs by project. Here's the code I have for just the map layers and the info windows. When it's done loading, clicking on the map shows nothing. As soon as it's moved just a pixel, the info windows show up.
<script type="text/javascript">
 dojo.require("esri.map");
 dojo.require("esri.layers.FeatureLayer");
  var map;
  var campus;
 
function init() {
 map = new esri.Map("mapDiv",{extent:startExtent });
 
 var spatialRef = new esri.SpatialReference({wkid:102100});
 var startExtent = new esri.geometry.Extent();
 startExtent.xmin = -9879338;
 startExtent.ymin = 5286787;
 startExtent.xmax = -9878257;
 startExtent.ymax = 5287623;
 startExtent.SpatialReference = spatialRef;
 map.setExtent(startExtent);
    var basemap = new esri.layers.ArcGISTiledMapServiceLayer("SERVICE NAME");
    map.addLayer(basemap);
 
 //Popup code for campus building layer
 
 var contenta = "<b>Building Type</b>: ${Type}" +
                      "<br /><b>Hours</b>: ${Hours}" +
       "<br /><input type='hidden' id='url' value=${FloorPlan}></input>" +           // KEEP THIS LINE ON- NEEDED FOR loadUrl FUNCTION
       "<br /><button onclick=revealModal('modalPage') value='test' />Floor Plan</button>";
        var bldginfo = new esri.InfoTemplate("${BldgName}", contenta);
 
 campus = new esri.layers.FeatureLayer("SERVICE NAME", {
        mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
        outFields: ["*"],
        infoTemplate: bldginfo
        });
 map.addLayer(campus);
 
 //Popup code for parking lot layer
 
 var contentb = "<b>Parking Lot</b>: ${LotNo} ${Commuter}" +
     "<br />This lot ${Meters} have parking meters.";
  var parkinfo = new esri.InfoTemplate("Parking Lot Information", contentb);
  
 
 parking = new esri.layers.FeatureLayer("SERVICE NAME", {
  mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
  outfields: ["*"],
  infoTemplate: parkinfo
  });
 map.addLayer(parking); 
      }