2011-02-15 66 views
0

我正在使用javascript和somethimes一个cretain js文件需要特定的css文件。 我想阻止在JavaScript中放置CSS文件的绝对路径。 我甚至想把js文件放在css文件的同一个文件夹中。 但是,js文件的路径是从执行它的文件中计算出来的。防止把绝对路径在JavaScript中的CSS文件

我该如何连接这个js文件和css文件?

+1

CSS从未用于JavaScript。它应该在HTML中使用..所以你的核心逻辑是错误的。你究竟想要完成什么? – 2011-02-15 10:29:10

+0

@Shadow Wizard:Css早在JavaScript成为客户端开发核心的一部分之前就开发出来了(因为ajax)。Css开发原始html页面。今天我们有很多选择我们的开发工具的选项。人们可以创建js工具(插件),用于许多html页面并具有单一设计。这就是为什么我需要以某种方式组合css和js。将css与页面关联并没有意义,而不是js文件。 – Naor 2011-02-15 10:41:56

回答

0

这没有完美的解决方案。

想到的一个解决方案是分析(使用DOM)页面上的脚本标签以找出用于加载脚本本身的路径,然后计算相对于此的路径。

其他解决方案是使用js组合器和css组合器,只是总是加载站点所需的所有js和css。

0

如果您确实需要将CSS和JavaScript链接在一起,那么在JavaScript文件中定义所需的CSS会更简单。通过添加新的链接标签,您可以使JavaScript页面动态使用CSS文件,但据我所知,没有办法指定相对于JavaScript文件的路径。

但是,你可以做的一件事就是这样。首先让每个HTML文件脚本的根路径相对于指定到该文件,如:

<script type="text/javascript"> 
    var jsPath = "relative_to_this_file/styles_and_scripts/" 
</script> 
<script type="text/javascript" 
    src="relative_to_this_file/styles_and_scripts/styler.js"> 
</script> 

,并具有styler.js代码做这个:

var myStylePath = jsPath + "myStyle.css" 
// add link tag for the CSS to HTML here using myStylePath 

您也产生在JavaScript或绝对路径在以类似方式动态提供JavaScript的代码中。如果绝对路径的根部分发生变化,则只需要相应地调整一行代码即可。或者,你也可以考虑一个不同的策略:静态地从你的HTML页面链接CSS文件,并在你的CSS选择器(.myClass {float:left;})中使用类。然后,您可以轻松使用JavaScript将新类添加到要设置样式的HTML标记中。

0

但js文件的路径是从执行它

这并不总是正确的文件来计算。只需使用正斜杠启动路径,它将与您的根web目录相关,例如

<link type="text/css" rel="stylesheet" href="/path/to/style.css" /> 
0

您可以声明一个保存“相对”路径的全局变量,而不是每当需要指定文件路径时都使用它。例如:

<script type="text/javascript"> 
var _relPath = "MyFolder/CSS"; 

... 

function SomeFunc() { 
    var cssFileName = _relPath + "/myfile.css"; //instead of MyFolder/CSS/myfile.css 
} 

... 
</script> 

这种方式很容易改变。

如果您正在使用服务器端语言,例如ASP.NET,经典的ASP,PHP - 你可以输出当前页面的相对路径让我们知道是否相关。