Thanks for the reply Mike, here goes: (the ==pagename.ext== denotes a
new file - sure there are better ways of doing this but i hope its
legible)

==index.html==

<script type="text/javascript" src="http://www.mydomain.com/js/
mts_loader.js"></script>

==mts_loader.js==

var mts_finan_times, mts_finan_timeout, mts_finan_loaded,
mts_finan_callback;

function mts_finan_waitFor(loaded, callback) {
        mts_finan_timeout = 300;
        mts_finan_times = 40;
        mts_finan_loaded = loaded;
        mts_finan_callback = callback;
  mts_finan_wait();
}

function mts_finan_wait(){
        if(mts_finan_times > 0){
                if(!mts_finan_loaded()){
                        mts_finan_times -= 1;
                        setTimeout('mts_finan_wait()', mts_finan_timeout);
                } else {
                        mts_finan_callback();
                }
        }
}

function mts_finan_loadJQuery(){
        if(!window.jQuery){
                var head;
                head = document.getElementsByTagName('head')[0];
          if (!head) { return; }

          var jquery = document.createElement('script');
          jquery.type = 'text/javascript';
                jquery.src = 'http://www.mydomain.com/js/jquery-1.2.6.pack.js';
          head.appendChild(jquery);
        }
}

function mts_finan_loadModal(){
        if(window.jQuery && !window.jQuery.modal){
                var head;
                head = document.getElementsByTagName('head')[0];
          if (!head) { return; }

                var modal = document.createElement('script');
          modal.type = 'text/javascript';
                modal.src = 'http://www.mydomain.com/js/
jquery.simplemodal-1.1.1.js';
          head.appendChild(modal);
        }
}

function mts_finan_laod(){
        if(window.jQuery && window.jQuery.modal){
                var head;
                head = document.getElementsByTagName('head')[0];
          if (!head) { return; }

                var finan = document.createElement('script');
          finan.type = 'text/javascript';
                finan.src = 'http://www.mydomain.com/js/mts_finan.js';
          head.appendChild(finan);
        }
}


(function init(){
        mts_finan_loadJQuery();
        mts_finan_waitFor(
                function(){
                        return !!(window.jQuery);
                },
                function(){
                        mts_finan_loadModal();
                        mts_finan_waitFor(
                                function(){
                                        return !!(window.jQuery.modal);
                                },
                                function(){
                                        mts_finan_laod();
                                }
                        );
                });
})();

==mts_finan.js==

// here i assume everything is loaded and fire off the modal window
with content.  no big secret here.


so basically, i inherited this code and don't like it one bit but the
guy who developed it insists its the best way to do this.


my proposed changes (based on feedback ive received) are:

1) use minified jquery and plugins instead of packed for
2) use google code or some other proper hosting service to host jquery
and plugins
3) gotta work on mts_loader.js


see what i mean now?

it checks for the existence of jquery and once its there loads the
plugins and tests if its there and only then does it load my file
(mts_finan.js)

hope this explains more than confuses! thanks! :)

-Alex

On Aug 30, 2:15 pm, "Michael Geary" <[EMAIL PROTECTED]> wrote:
> > From: Alex Weber
>
> > Currently what I'm doing is:
>
> > 1) Call function 1, checks for jQuery and if not then loads
> > the library and recursively checks until its available.
> > 2) Once its available, a second function is called and does
> > the same thing to load a plugin
> > 3) Ditto for my custom .js file
>
> You really need to post a link to a test page that illustrates your loading
> technique. Or at least, post a complete HTML+JS example with real code in a
> message here.
>
> From your description, it's anyone's guess what you're actually doing. Does
> "loads" mean "document.write() a script tag", or "create a dynamic script
> element", or what? Does "recursively" mean repeated calls to setTimeout?
> (BTW, that may look recursive, but it isn't.) Does "checks" mean... Well,
> you get the idea.
>
> My guess was that you're using dynamic script elements to load the .js
> files, and watching for certain symbols becoming defined on repeated
> setTimeout calls. But that is such a complicated solution that I have to
> think I guessed wrong.
>
> > I don't like this because of the excessive opening and
> > closing of connections required... is combining libraries +
> > custom code into 1 file a terrible pratice?
>
> Of course not! Who ever said combining .js files was a terrible practice?
> The fewer the files you download, the better. Combine all of your .js files
> into a single file, with the likely exception of jquery.min.js since you can
> let Google pay for that one.
>
> > Any other decent way to get by this step-by-step rudimentary approach?
>
> Well, tell us in painstaking detail exactly what you need to accomplish. Is
> this just an HTML page that needs to load some .js files? Like, "Hello?
> Script tags?" Since you currently have a more complicated method, there must
> have been some reasons you chose that - something that a plain script tag
> wouldn't accomplish?
>
> BTW, if you do use Amazon S3 as I suggested, there is one wrinkle: They
> don't GZip your files for you - you have to take care of that yourself. But
> forget that for the moment and let's make sure the problem you're trying to
> solve is clearly explained.
>
> So post your current code and your requirements, and let's take it from
> there.
>
> -Mike

Reply via email to