2011-09-08 79 views
1

我有一个网页,其中也有一个样式表切换器,所以用户可以选择自己的自定义图形和布局(css文件)如何做外部脚本?

这些CSS文件加载在图形中,但只有当调用点击...即使页面已经打开几秒钟或几分钟,当图形可能已经被加载进行即时切换时。

,所以我采取了以下代码:

function MM_preloadImages() { //v3.0 
    var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array(); 
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++) 
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} 
} 

</SCRIPT> 


<body onLoad="MM_preloadImages('/corporate/heading.png','/creative/heading.png','/earth/heading.png','/under-the-sea/heading.png','/space-and-stars/heading.png','/classical/heading.png','/corporate/document.jpg','/space-and-stars/document.png','/creative/document.jpg','/earth/background.jpg','/under-the-sea/background.jpg','/classical/document.png','/classical/background.jpg','/under-the-sea/document.png','/corporate/home-graphics.png','/earth/content.jpg','/earth/footer.jpg','/earth/home-graphics.png','/under-the-sea/home-graphics.png','/creative/home-graphics.png','/space-and-stars/background.jpg','');"> 

它的工作充满了想象 - 你打开网页,并且只要它需要注意到,您可以点击样式是相同的时间量需要立即轻松切换样式缓存的样式。

但是,该网站已经成长,现在相当多的网页与上述每个html文件中。我只是添加了“创意2”风格,这导致上述需要更新........此代码的维护效率低,无法编辑每个页面。

会有人能够指出或告诉我怎么原则:

<body onLoad="MM_preloadImages('/styles-code.js);"> 



styles-code.js?? page: 

'/corporate/heading.png', 
'/creative/heading.png', 
'/earth/heading.png', 
'/sea/heading.png', 
'/classical/heading.png', 

'/corporate/background.jpg', 
'/creative/background.jpg', 
'/earth/background.jpg', 
'/sea/background.jpg', 
'/classical/background.jpg', 

etc 

,并有1将此代码通过一个简单的所有页面查看和编辑列表叫的?

会很感激的指导与此,

回答

1

不能完全页面名称传递给方法加载从页面项目。但是你可以这样做。

<body onLoad="LoadStyles('/styles-code.js');"> 
<script> 

LoadStyles = function(pageName){ 
    var head= document.getElementsByTagName('head')[0]; // get head element 
    var script= document.createElement('script'); // create new script element 
    script.type= 'text/javascript'; // set type 
    script.onreadystatechange= function() { 
     if (this.readyState == 'complete') 
      MM_preloadImages(imgArray) ; // call when script is loaded 
    } 

    script.src= pageName; // set script source path 
    head.appendChild(script); // append to body 

} 

</script> 

你的风格code.js将包含数据如下:

imgArray = [ 
'/corporate/background.jpg', 
'/creative/background.jpg', 
'/earth/background.jpg', 
.... 
'otherresourcenames.jpg']; 
+0

感谢寻找到它,虽然我试图与它上面却没有找到成功。这可能非常简单,因为我不知道JavaScript。我直接复制粘贴代码,也许它的一部分需要定制哪些是其他常识?但它不工作,我不知道如何开始理解为什么。请指教? 如果可以看到为什么它不工作,我试图此页面是: http://www.delightwebdesign.co.uk/ 与JavaScript的网页上: HTTP:// WWW。 delightwebdesign.co.uk/js/styles-code.js 我很欣赏你的看法。 –

+0

它有可能看到,它不工作(通过清除浏览器缓存)更改样式(页面左上角),当不工作图形下载时更改,工作时,图形开关即时已经预装。 –

+0

固定起来的:var imgArray = [ '/corporate/background.jpg', '/creative/background.jpg', '/earth/background.jpg', 'otherresourcenames.jpg' ]; MM_preloadImages.apply(this,imgArray); https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/function/apply –