Loading a sprite from file error

When I attempt to load a sprite and set its position like this:

var dinosaur = cc.Sprite.spriteWithFile("Resources/res/menu/trex_seq/rex_001.png");
            dinosaur.setAnchorPoint(cc.PointZero);
            if ([cc.Director.sharedDirector().mainScreen].scale == 2) {
                dinosaur.setScale(2);                
            }

            //var test1 = dinosaur.getTextureRect().size.height;
            //var test2 = dinosaur.getTextureRect().size.width;
            var offset = 60;
            dinosaur.setPosition(cc.ccp(0, windowSize.height - dinosaur.getTextureRect().size.height - offset));

            this.addChild(dinosaur);

If I do a hard-reload (so with empty cache), the dinosaur.getTextureRect().size height and width are both set to 0 when they should be set to the texture width and height.
Whereas if I then follow on to do a normal refresh, the positions load perfectly.

Just wondering if anyone else has come across an issue similar!

As a note, with this small sample program I had a similar effect, where the menuButton only became clickable and in the normal position after the refresh and therefore cache loading:

var menu1;
var selection1;

var main = cc.LayerColor.extend({
    init:function()
    {
        this._super();
        this.initWithColor(cc.ccc4(0, 0, 255, 255));
        this.setIsTouchEnabled(false);

        var s = cc.Director.sharedDirector().getWinSize();

            selection1 = cc.MenuItemImage.itemFromNormalImage("Resources/play_btn.png",
            "Resources/play_btn_pressed.png",
            null,
            this,
            function()
            {
            titleLabel = cc.LabelTTF.labelWithString("Clicked", "Arial", 30);
            titleLabel.setPosition(cc.ccp(s.width/2, (s.height - s.height/20)));
            titleLabel.setColor(cc.ccc3(255,0,0));
            this.addChild(titleLabel, 0);
            });

            menu1 = cc.Menu.menuWithItems(selection1);        
            //menu1.setPosition(100, 200);        
            this.addChild(menu1);


        return true;
    },
    });

main.scene = function() {
    var scene = cc.Scene.node();
    var layer = this.node();

    scene.addChild(layer);
    return scene;
}

main.node = function() {
    var pRet = new main();

    if(pRet && pRet.init()){
        return pRet;
    }
    return null;
}

Preloading is necessary for all resources before they are displayed.
Please refer to cocos2d.js in the HelloWorld directory to preload your resources.

cc.loadjs = function (filename) {
    //add the file to the que
    var script = cc.$new('script');
    script.src = cc.Dir + filename;
    script.order = cc.loadQue.length;
    cc.loadQue.push(script);


    script.onload = function () {
        //file have finished loading,
        //if there is more file to load, we should put the next file on the head
        if (this.order + 1 < cc.loadQue.length) {
            cc.$('head').appendChild(cc.loadQue[this.order + 1]);
            //console.log(this.order);
        }
        else {
            cc.setup("gameCanvas");
            //we are ready to run the game
            cc.Loader.shareLoader().onloading = function () {
                cc.LoaderScene.shareLoaderScene().draw();
            };
            cc.Loader.shareLoader().onload = function () {
                cc.AppController.shareAppController().didFinishLaunchingWithOptions();
            };
            //preload ressources
            cc.Loader.shareLoader().preload([         //Hi, I am here. Please preload your resources firstly.
                {type:"image", src:"Resources/HelloWorld.png"},
                {type:"image", src:"Resources/CloseNormal.png"},
                {type:"image", src:"Resources/CloseSelected.png"}
            ]);
        }
    };
    if (script.order === 0)//if the first file to load, then we put it on the head
    {
        cc.$('head').appendChild(script);
    }
};

Thanks a lot.