【问题标题】:Modify URL in a HTML and inside CSS and Javascript在 HTML 和 CSS 和 Javascript 中修改 URL
【发布时间】:2013-05-15 12:14:02
【问题描述】:

JQuery 是否有可能在加载到浏览器之前修改 CSSJavascript 资源中的 URL。或者至少在浏览器中加载时?

URL 通常指向资源,如图像、字体等。

基本上我正在考虑这个想法,因为我通常做大型单页网络应用程序/网站,在开发资源root 路径是相对的,但在生产中根路径指向其他一些URL

有什么办法可以解决这类问题吗?我想有一个 javascript 来检查:

(伪代码)

var isDevMode = true;
if (isDevMode) {
 root_path = "/";
} else {
 root_path = "http://somewhere.com/"
}

所以我只是设置了它,我非常大而复杂的 HTML 文件中的所有路径,包括页面中的 CSS,都获得了正确的根路径。

【问题讨论】:

  • 如果我没记错的话,可以将css加载到js的var中,那么你可以使用.replace()。然后append it to head like this
  • 也许你也可以尝试使用类似background:url('./images/body_bg.png');的路径重写它
  • 服务器端有什么?在 asp.net 中可以覆盖 Render 方法和正则表达式并替换链接,但它有点难看。
  • @user1778606 我做的 SPA 没有服务器端,至少它是紧密集成的。我们的设计只是从外部存储服务中调用资源

标签: javascript jquery css


【解决方案1】:

在 html 中修改样式表路径的一种方法是使用 $("link") 选择器并修改它的 html 属性。 (代码如下)

修改样式表中样式的实际路径,开始进入 jS CSS Parsing。您可能想在这里查看接受的答案:CSS parser/abstracter? How to convert stylesheet into object

$(document).ready(function () {
    var isDevMode = true;
    var root_path = "";

    if (isDevMode) {
        root_path = "/";
    } else {
        root_path = "http://somewhere.com/";
    }

    $("link").each(function (index) {
        var existing_path = $(this).attr("href");
        $(this).attr("href", root_path + existing_path);
    });
});

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 2013-05-27
  • 1970-01-01
  • 2023-03-25
  • 2017-05-30
相关资源
最近更新 更多