合并多个样式表

时间:2011-03-07 13:26:38

标签: javascript css

我的任务是为一个我没有建立并且相当老的网站改变一点css。长话短说 - 从头开始​​构建网站不是一种选择。有两个与该站点关联的CSS样式表。我试过把它们结合起来没有运气。第一个样式表在文档的head部分中正常声明。第二个似乎是从以下代码中提取的:

<script type="text/javascript">
<!--
function P7_StyleLoader(tS) { //v1.3 by PVII
var tH = '',
    tDoc = '',
    tA = '<LIN' + 'K REL="stylesheet" HREF=',
    tB = ' TYPE="text/css">';
if (document.getElementsByTagName) {
    var bb = document.getElementsByTagName("LINK");
    if (bb) {
        for (var k = 0; k < bb.length; k++) {
            if (bb[k].rel.toLowerCase() == "stylesheet") {
                var h = bb[k].href,
                    x = h.lastIndexOf("/");
                if (x > 0) {
                    tH = h.substring(0, x + 1);
                }
                bb[k].disabled = true;
                tDoc = tA + '"' + tH + tS + '"' + tB;
                document.write(tDoc);
                break;
            }
        }
    }
}
}
P7_StyleLoader('STYLE-SHEET-2.css');
//-->
</script>

如果我合并它们并从html中删除其中一个样式表,那么该网站在布局方面几乎会中断。有人可以告诉我上面的代码除了拉“STYLE-SHEET-2.css”之外还做了什么吗?我的想法是,我想使用上面的代码并将其他样式放入其中,反之亦然?我在这里错过了什么吗?

谢谢!

4 个答案:

答案 0 :(得分:3)

代码通过禁用其他样式表来替换当前样式表

似乎是设计用于删除Netscape 4特定样式表的代码,因为NS4不了解禁用的样式表:)

这是2002年关于这个显然更老的代码的讨论 http://www.webxpertz.net/forums/showthread.php?t=20718

答案 1 :(得分:2)

javascript片段禁用所有样式表链接语句,并仅导入style-sheet-2.css。

答案 2 :(得分:1)

实际上,它的作用是为样式表插入一个新的-attribute。您应该使用firebug查看DOM文档,以使用style-sheet-2.css查看确切生成的链接。

我的猜测是它加载了以下行:

<link rel="stylesheet" href="STYLE-SHEET-2.css" type="text/css" />

它也可能(重新读取你的代码..)它正在剥离所有其他CSS并用这个替换src。非常奇怪......

答案 3 :(得分:1)

龙跃。这是一些令人讨厌的javascript。

它正在做的大致是:它扫描文档中的任何<link>元素并禁用它们。它会加载函数调用中指定的样式表。

此外,它确定原始CSS包含的目录路径是什么,并将其附加到它正在加载的样式表的前面,以便它从原始路径加载的路径加载。

代码也被(略微)混淆,大概是为了防止自动脚本检测到他们正在做什么。

问题是为什么有人会真正解决所有麻烦?

我想不出他们为什么这么做的原因太多了。唯一有意义的是愚弄垃圾邮件机器人加载错误的样式或类似的东西。使页面看起来与机器人看起来与人类如何看待它不同。可能也试图愚弄搜索引擎机器人,但这将被认为是一个非常糟糕的举动 - 如果谷歌抓住了你的黑名单。