我正在尝试让 ajax 导航正常工作,所以这是我尝试过的:
$('nav a').on('click', function() {
$.ajax({
url: this.href,
success: function(data) {
$('#content').html( $(data).find('#content').html() );
}
});
});
问题是,由于一切都是相对链接的,所以我的链接或 img
都不起作用。更糟糕的是,它尝试加载所有 img
,甚至是我没有使用的那些(自动 img
预加载),并且我的 Logo 的相对路径不正确一些页面。
如果我更改所有 src
和 href
事件,然后通过正则表达式运行它以查找并替换所有错误路径,然后将属性更改回 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
。
最佳答案
在设置中使用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/