我有一个很多页面的网站,它还有一个样式表切换器,因此用户可以选择自己的自定义图形和布局(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”风格,这导致上述需要更新........维护此代码对于编辑每一页都是低效的。
所以我一直在寻找如何从外部页面调用一个数组,但没有得到以下工作,我不知道足够的JavaScript来诊断原因。
头脑中的:
<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>
使用页面路径的正文载入:
<body onLoad="LoadStyles('/js/styles-code.js');">
样式-code.js ...
imgArray = [
'/corporate/background.jpg',
'/creative/background.jpg',
'/earth/background.jpg',
'otherresourcenames.jpg'];
Pls可能会比我指出的更有经验和知识的人在这里看起来不合适吗?
非常感谢威尔
答案 0 :(得分:2)
使用apply将字符串作为参数传递给MM_preloadImages函数,而不是将Array作为函数的唯一参数传递。
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