javascript - 这总是有效吗?以及可以改进吗?

标签 javascript jquery ajax

我正在尝试让 ajax 导航正常工作,所以这是我尝试过的:

$('nav a').on('click', function() { 
    $.ajax({
        url: this.href,
        success: function(data) {
            $('#content').html( $(data).find('#content').html() );
        }
    });
});

问题是,由于一切都是相对链接的,所以我的链接或 img 都不起作用。更糟糕的是,它尝试加载所有 img ,甚至是我没有使用的那些(自动 img 预加载),并且我的 Logo 的相对路径不正确一些页面。

如果我更改所有 srchref 事件,然后通过正则表达式运行它以查找并替换所有错误路径,然后将属性更改回 srchref 会起作用吗?

这就是我的意思。

$('nav a').on('click', function() {
    var href = this.href 
    $.ajax({
        url: this.href,
        success: function(data) {
            var html = data.replace(/href/g, 'hrefhref')
                .replace(/src/g, 'srcsrc');

            $('#content').html(
                $(html).find('#content').html().replace(/hrefhref/g, 'href')
                    .replace(/srcsrc/g, 'src')
                    .replace(/href=\.\/'/g, "href='" + href)
                    .replace(/href=\.\/"/g, 'href="' + href)
                    .replace(/src=\.\/'/g, "src='" + href)
                    .replace(/src=\.\/"/g, 'src="' + href)
            );
        }
    });
});

我的问题是:如果路径不以点开头,有什么方法可以让它工作吗? 当然,如果 href 或 src attr 位于另一个域或已经绝对路径,则它不应该改变任何内容

这也将始终适用于所有浏览器,在解析时会删除 attr hrefhrefsrcsrc

最佳答案

在设置中使用BASE元素。这样你就可以在本地开发,也可以放到服务器上。您唯一需要更改的是 BASE 元素中的 href。

http://www.w3.org/TR/html401/struct/links.html#h-12.4

或者也可以查看“可怕且可悲的”W3Schools 解释:http://www.w3schools.com/TAGS/tag_base.asp

关于javascript - 这总是有效吗?以及可以改进吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740920/

相关文章:

javascript - Prettyphoto - 如何将唯一参数传递给回调函数

javascript - 用 javascript 压缩 XML 文件?

javascript - 如何在angularjs中拆分日期时间

javascript - 在 Google Maps Javascript API 中将距离转换为英里

ajax - jquery ajax多表单提交

javascript - PHP -> JS 通过 AJAX - 数据类型

javascript - 使用 javascript/jquery 删除破折号并用 <li> 括起来

javascript - AngularJS ng-show 无法使用我在工厂中定义的函数

javascript - 如何启动 window.onload "onload"?

javascript - PHP页面刷新问题