将普通链接动态转换为Ajax

时间:2012-02-29 12:46:46

标签: ajax dynamic load hyperlink

我已经汇总了一些来自不同来源的代码,但javascript对我来说有点不为人知,而且我似乎只是失败了我到目前为止的代码..

我想要做的是将页面上的每个普通链接转换为ajax链接并通过ajax加载页面。

到目前为止,我只是成功地从初始页面转换链接并在div中加载内容。问题是我没有访问div中加载的内容,新内容仍然有正常链接而不是ajax。

  • 每次div更改时,有没有办法可以转换div中加载的内容中的新链接?
  • 另外我不知道的是,如果用户点击菜单中的主页按钮,它将加载索引的内容以及此脚本,一切都将成为循环。如果代码在div中加载,如何阻止代码加载索引?
  • 如果您怀疑此代码可能出现任何其他问题,请您建议我改变什么?

这是我到目前为止的代码.. 非常感谢您的任何建议!

插入标题:

<script type="text/javascript">
var xmlhttp;
if(window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); }
else if(window.ActiveXObject){ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
else{ }
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4)
{ document.getElementById("contentarea").innerHTML = xmlhttp.responseText; }
else{ document.getElementById("contentarea").innerHTML = ""; }
}

function loadPage(url){
document.getElementById("contentarea").innerHTML = "";
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
</script>

插入身体的某处:

<div id="contentarea"></div>

在身体结束前插入:

<script>
var oP = document.getElementsByTagName("a");
var ctr=0;
while(ctr < oP.length){
var oldHref = document.getElementsByTagName("a")[ctr].href;
document.getElementsByTagName("a")[ctr].href="javascript:loadPage('"+oldHref+"');";
ctr++;
}
</script>

1 个答案:

答案 0 :(得分:0)

这里ja go ..为你鞭打了..你可以使用document.links来获取所有锚标签。我只在'contentArea'上这样做。内部的所有内容(function(){只会在文档准备就绪时调用。然后,在onreadystatechange事件中,我再次调用该函数,在resposne中返回的任何锚点上设置click事件。

<script type="text/javascript">
var xmlhttp;

function loadPage(url){
document.getElementById("contentarea").innerHTML = "";
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

var parseAnchors = function(){
    var anchors = document.getElementById("contentarea").links; // your anchor collection
    var i = anchors.length;
    while (i--) {
      var anchor = anchors[i];
        anchor.onclick = (function(url) {
          return function() {
            loadPage(url);
            return false;
          };
        })(anchors[i].href);
        anchor.href = "#";
    }
  };

(function () {

if(window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); }
   else if(window.ActiveXObject){ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
   else{ }
   xmlhttp.onreadystatechange=function(){
   if(xmlhttp.readyState==4)
   { document.getElementById("contentarea").innerHTML = xmlhttp.responseText; }
   else{ document.getElementById("contentarea").innerHTML = ""; }
   parseAnchors();
 }

window.onload = function () {
 parseAnchors();
}
</script>