调用javascript函数以包含样式表失败

时间:2013-12-29 03:05:42

标签: javascript css

这是我遇到的失败 - '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?

1 个答案:

答案 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);
}