2013-02-14 81 views
0

嗨Drupal网站开发人员!我有一个问题,必须解决,但我从来没有使用过Ajax页面重新加载。页头不能重新加载和一些div块(我给他们iscritical="true"criticalid="someidword"标签)。所以,我写了这个JavaScript代码:如何动态地使用ajax重新加载页面内容,而无需在Drupal上重新加载?

$(document).ready(function(){ 
$('a').click(function(){ 
    var href_ = ($.trim($(this).attr('href'))).toLowerCase(); 
    var href = $(this).attr('href'); 

    if((href.substr(0, 1) != '#') && (href.substr(0, 11) != 'javascript:')){ 
     IG_AJAX_PAGELOAD(href); 
     return false; 
    } 
}); 
}); 

function IG_AJAX_PAGELOAD(href){ 
$.get(href, function(res){ 
    if((strpos(res.toLowerCase(), '<body>', 0) == false) || (strpos(res.toLowerCase(), '</body>', 0) == false)) 
     return false; 
    var critical_block_html_array = new Array(); 
    $('div[iscritical="true"]').each(function(){ 
     critical_block_html_array[$(this).attr('criticalid')] = $(this).html(); 
    }); 

    console.log(document.ready); 

    document.body.innerHTML = res.substr(strpos(res.toLowerCase(), '<body>', 0) + 7, (strpos(res.toLowerCase(), '</body>', 0) - 1 - (strpos(res.toLowerCase(), '<body>', 0) + 7))); 
    for(var cur in critical_block_html_array){ 
     if($('div[criticalid="'+cur+'"]').length < 1) continue; 
     $('div[criticalid="'+cur+'"]').html(critical_block_html_array[cur]); 
    } 

    $(document).ready(); 
    $(window).load(); 

    console.log('page loaded successfully'); 
}); 
return false; 
} 

它的工作原理。但是,当网页内容变得重新加载,JavaScript的代码,这是<head>标签内不工作,如果只是加载网页,他们必须是如何工作的。我尝试运行假的“页面加载和窗口加载”事件,但没有任何想要工作。我应该怎样做这个代码才能完美工作?可能是,你知道一些模块?

回答

0

也许return false;是你的问题。你想要在页面上的每个链接上触发事件!?

请告诉我们你为什么需要这样的代码,我们尽力帮助。

并且不要忘记为您的代码创建一个jsfiddle

相关问题