我有一个简单的 javascript,它在按下按钮时加载一个新的样式表……它在除 Chrome 之外的所有浏览器中都可以正常工作。它甚至在共享 Webkit 引擎的 Safari 中也能正常工作。
这是我页面的链接:www.evanjackson.net/index-new.html
我已经研究了这个问题并尝试了很多东西,但无法弄清楚。该脚本位于文件“initial.js”中。任何帮助将不胜感激!
相关代码:
<div onclick="hideStuff('button1'); showStuff('button2'); loadjscssfile('css/custom-theme-reskin2/reskin.css','css'); return false;" id="button1" style="display: block;">
</div>
function loadjscssfile(filename, filetype){
if (filetype=="js"){ //if filename is a external JavaScript file
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)
}
else if (filetype=="css"){ //if filename is an external CSS file
var fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename)
}
if (typeof fileref!="undefined")
document.getElementsByTagName("head")[0].appendChild(fileref)
}
最佳答案
我也遇到过这种情况,可能会有一些见解。我在 Mac OSX Lion 上使用 Chrome 13.0.782.112。
浏览器在每个域的基础上限制可以对外部文件发出的请求的数量。如果您打开 Chrome 的开发人员工具并查看网络选项卡,您可以看到对 .css 文件的请求并将其置于待定状态。仔细观察,您会发现大约还有十几个其他文件仍在尝试从同一域加载。我的猜测是这些文件中的一个或多个文件非常大,或者服务器没有响应。这会导致浏览器无法从同一域加载其他文件。
更新
请求此文件:http://www.evanjackson.net/music/track_1.m4a和许多其他 .m4a 轨道,服务器没有响应。由于 .css 文件在同一个域中,Chrome 正在等待这些 .m4a 文件首先加载。
看起来某些版本的 Chrome 在完全加载之前无法处理 .m4a 文件。
关于Javascript 适用于除 Chrome 之外的所有浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7070589/