我正在尝试通过AJAX更新内容来仅使用Javascript来更改URL。
这是为了防止某些内容(即音乐,聊天消息框等)刷新和
我今天刚开始尝试实现这样的东西,到目前为止我已经有了这个:
var a = document.querySelectorAll('a')
for (var i=0; i<a.length; i++) {
a[i].addEventListener('click',function(event){event.preventDefault();};
}
return false
然而,这段代码
我的问题是:如何从刷新中取消年龄,但仍允许更改网址?
答案 0 :(得分:2)
尝试类似
的内容var a = document.getElementsByTagName('a'),
ajax;
for (var i=0; i<a.length; ++i) {
a[i].addEventListener('click', handleAnchor, false);
}
function handleAnchor(e){
e.preventDefault();
if(ajax) ajax.abort();
ajax = new XMLHttpRequest();
ajax.onload = updateContent;
ajax.open("get", this.href, true);
ajax.send();
}
function updateContent() {
// Do something with `this.responseText`
}
答案 1 :(得分:1)
您可以尝试基于哈希的网址方案:
someurl/#param1
someurl/#param2
...
答案 2 :(得分:1)
var anchors = document.getElementsByTagName('a');
for(var i=0; i < anchors.length; i++) {
addEvent(anchors[i], 'click', preventDefault);
}
function preventDefault(e) {
e = e || window.event;
(e.preventDefault)?
e.preventDefault() : e.returnValue = false;
}
function addEvent(obj, evType, fn){
if (obj.addEventListener){
obj.addEventListener(evType, fn, false);
return true;
}
else if (obj.attachEvent){
var r = obj.attachEvent("on"+evType, fn);
return r;
} else {
return false;
}
}
上试一试
答案 3 :(得分:1)
尝试(此模式),使用jquery .load()
HTML
<div class="1">content 1</div><div class="2">content 2</div>
<a class="1" href="#">update 1</a>
<a class="2" href="#">update 2</a>
JS
$(function() {
var url = "http://example.org";
$("a").each(function(i, el) {
$(this).on("click", function(e) {
e.preventDefault();
if (i === 0) {
$("div.1")
.load(url + " #" + $(el).attr("class"));
};
if (i === 1) {
$("div.2")
.load(url + " #" + $(el).attr("class"));
};
})
});
});
答案 4 :(得分:0)
请尝试
$("a[href=#]").click(function (e) {
e.preventDefault();
})