Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据URL加载不同的css_Javascript_Jquery - Fatal编程技术网

Javascript 根据URL加载不同的css

Javascript 根据URL加载不同的css,javascript,jquery,Javascript,Jquery,如何根据url加载不同的css 示例: https://domain1.tld & https://*.domain.tld => css1.css https://domain2.tld & https://*.domain2.tld => css2.css https://elsedomain.tld & https://*.elsedomain.tld => css3.css 提前感谢。由于所有这些都在不同的域中,您可以将css文件链接到提供服务

如何根据url加载不同的css

示例:

https://domain1.tld & https://*.domain.tld => css1.css
https://domain2.tld & https://*.domain2.tld => css2.css
https://elsedomain.tld & https://*.elsedomain.tld => css3.css

提前感谢。

由于所有这些都在不同的域中,您可以将css文件链接到提供服务的标记中。

如果您必须使用JavaScript(而不是将其构建到.NET项目或示例中),您可以使用case语句查看主机:

function mymodule_preprocess_html() {
  var site = window.location.hostname;

  switch (site) {
    case 'siteurl1':
      //Add code for site 1 here
      break;
    case 'siteurl2':
      //Add code for site 2 here
      break;
    case 'siteurl3':
      //Add code for site 3 here
      break;

  }
}
使用JavaScript插入CSS文件的代码可以添加并指定如下:

function mymodule_preprocess_html() {
  var site = window.location.hostname;

  switch (site) {
    case 'siteurl1':
         var head  = document.getElementsByTagName('head')[0];
         var link  = document.createElement('link');
         link.id   = cssId;
         link.rel  = 'stylesheet';
         link.type = 'text/css';
         link.href = 'http://website.com/css/stylesheet1.css';
         link.media = 'all';
         head.appendChild(link);
      break;
    case 'siteurl2':
         var head  = document.getElementsByTagName('head')[0];
         var link  = document.createElement('link');
         link.id   = cssId;
         link.rel  = 'stylesheet';
         link.type = 'text/css';
         link.href = 'http://website.com/css/stylesheet2.css';
         link.media = 'all';
         head.appendChild(link);
      break;
    case 'siteurl3':
         var head  = document.getElementsByTagName('head')[0];
         var link  = document.createElement('link');
         link.id   = cssId;
         link.rel  = 'stylesheet';
         link.type = 'text/css';
         link.href = 'http://website.com/css/stylesheet3.css';
         link.media = 'all';
         head.appendChild(link);
      break;

  }
}

可能有更整洁的方法……

css文件都在同一个vhost/domain上,我只想在域/url发生变化时使用不同的css。与其拥有所有域的所有css,不如拥有所需的css。这有什么意义?当我需要不同的css(背景图像、按钮等):我的意思是只保留一个域所需的内容。我想你并不知道你在说什么。。。不同的域都在同一个Web空间/服务器上,我需要在域名更改时动态加载css…谢谢,我可以在域名中使用通配符吗?或者定义domain.tld就足够了?您知道
$\u服务器['HTTP\u主机']PHP是对的吗?你不能仅仅把它放在JavaScript中。你是对的,对不起-应该是
window.location.hostname
我已经更新了答案。@putvande如果他/她可以在PHP中使用
$\u SERVER['HTTP\u HOST']
,那么他们就可以将链接输出到正确的CSS文件。我认为最好是将其输入到PHP中:)用JS加载CSS不是一个好主意,除非是在JS显示之前不显示的元素。最好是在服务器端将正确的CSS文件包含在HTML中。没有给出足够的信息来解释为什么这不可能。您可以使用apache重写规则吗?我不太懂,所以你需要自己查一下,只是一个建议。或者这不是你的解决方案?