这是我遇到的失败 - 'sitePath'是全局文件范围内的javascript变量:
<link rel="stylesheet" type="text/css"
href="javascript:getJval('sitePath')/rb_UI_styles.css" />
这是getJval():
function getJval(theVal)
{
return theVal;
}
最初我试过这个,但它不起作用:
<link rel="stylesheet" type="text/css"
href="javascript:sitePath/rb_UI_styles.css" />
我读了很多SO帖子,其中包括this个帖子,我读过的很多这些帖子都有一个'href',可以通过
来设置 href="javascript:someFunc(someparam)"
语法。
但是,调用javascript函数来设置'href'的语法是而不是在href中为我提供了拉入样式表:
<link rel="stylesheet" type="text/css"
href="javascript:getJval('sitePath')/rb_UI_styles.css" />
无法弄清楚原因。我知道样式表可以被拉入,因为如果我将上面的内容替换为CSS文件的实际URL,则样式会在网页上成功显示。
由于某种原因,这个javascript:function()语法不是否可以在样式表链接中设置href?
答案 0 :(得分:2)
问题是您无法使用JavaScript将文件路径输出到href
属性中的样式表。当您将JavaScript用于锚标记的href
时,只有在单击锚标记时才会调用JavaScript函数。对于link元素,它根本不处理JavaScript。
如果你想动态加载CSS,你需要使用PHP在页面创建之前回显正确的文件路径,或者调用一个JavaScript函数,它将链接元素作为@Pranav Ram插入到DOM中建议。
function loadStyleSheet( path, fn, scope ) {
var head = document.getElementsByTagName( 'head' )[0]
link = document.createElement( 'link' );
link.setAttribute( 'href', path );
link.setAttribute( 'rel', 'stylesheet' );
link.setAttribute( 'type', 'text/css' );
head.appendChild(link);
}