我正在努力让ajax导航工作,所以这就是我尝试过的:
$('nav a').on('click', function() {
$.ajax({
url: this.href,
success: function(data) {
$('#content').html( $(data).find('#content').html() );
}
});
});
问题是因为我的链接或img
都没有工作,所有内容都相对链接。更糟糕的是,它尝试加载所有img
甚至是我没有使用的(img
预加载),并且我的徽标的相对路径对于某些页面是不正确的。
如果我更改了所有src
和href
,则通过正则表达式运行以查找并替换所有错误路径,然后将attrs更改回src
和href
它会起作用吗?
这就是我的意思。
$('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 hrefhref
和srcsrc
被剥离。
答案 0 :(得分:15)
在设置中使用BASE
元素。这样,您可以在本地开发,并可以将其放在服务器上。您唯一需要改变的是BASE
元素中的href。
http://www.w3.org/TR/html401/struct/links.html#h-12.4
或者看到“可怕而悲惨”的W3Schools解释:http://www.w3schools.com/TAGS/tag_base.asp
答案 1 :(得分:3)
您可以使用虚拟主机确保dev和local之间的绝对路径相同。