Hi,
> I'm trying to develope a small piece for dynamic loading in jquery, wich
> loads the .js and .css source files on the fly without any special markup
> in the html page.
For .js files you can use jspax (www.jspax.org). I use it to load jQuery and
plugins on demand (actually I made it for that purpouse at the beginning).
For .css I just had that question from a friend of mine and made a small set
of jsPax-packages for him:
---cssloader.js
$using('xBrowser.simulateXMLHttpRequest',function() {
$package('cssloader', {
base: '/',
load: function(css) {
var x = new XMLHttpRequest();
x.open('GET',cssloader.base+css+'.css');
x.onload = function() {
var e = document.createElement("style");
e.type="text/css";
e.appendChild(document.createTextNode(x.responseText));
document.getElementsByTagName("head")
[0].appendChild(e);
};
x.send('');
}
});
});
---
---xBrowser/simulateXMLHttpRequest.js
var impl = 'native';
if( !window.XMLHttpRequest ) impl = (window.ActiveX)?'activex':'iframe';
$using('xBrowser.simulateXMLHttpRequest.'+impl,function() {});
---
---xBrowser/simulateXMLHttpRequest/native.js:
$package('xBrowser.simulateXMLHttpRequest.native',{});
---
---xBrowser/simulateXMLHttpRequest/activex.js:
var lib = /MSIE 5/.test(navigator.userAgent) ? "Microsoft" : "Msxml2";
window.XMLHttpRequest = function() {
var rval = new ActiveXObject(lib + ".XMLHTTP");
rval.onreadystatechange = function() {
if(x.readystate == 4) rval.onload();
};
return rval;
};
$package('xBrowser.simulateXMLHttpRequest.activex',{});
---
use them like this:
$using('cssloader', function(){
cssloader.base='https://www.example.com/styles/';
cssloader.load('mywonderfull');
...
});
I have not tested the code, but he did not complain up to now ;-)
> The problem is that it seems that the browser doesn't wait until
> the script (the plugin) is finished loading
Yes, you are using assynchronous XMLHttpRequests. JsPax does that as well, but
it can cope with that by usein callback functions. JSAN does use synchronous
XMLHttpRequests to circumvent that problem.
Christof
_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/