【发布时间】:2012-06-03 08:27:11
【问题描述】:
我正在编写基于 AJAX 的完整网站。现在我正在做页面导航和内容显示而无需重新加载页面。这就是我决定这样做的方式:
<html>
<head>
<!--CSS-->
.hidden {display:none;}
</head>
<body>
<!--Menu bar-->
<a href="link_to_real_page_for_JS-disabled-users" onclick="loadPage1(); return false;">Page1</a>
<a href="link_to_real_page_for_JS-disabled-users" onclick="loadPage2(); return false;">Page2</a>
<a href="link_to_real_page_for_JS-disabled-users" onclick="loadPage3(); return false;">Page3</a>
<!--Content blocks for different pages-->
<div class="current" id="page1">
<!--Page 1 content-->
</div>
<div class="hidden" id="page2">
<!--Page 2 content-->
</div>
<div class="hidden" id="page3">
<!--Page 3 content-->
</div>
<!--JS for managing pages links-->
<script>
$(document).ready(function() {
});
function loadPage1() {
$('.current').hide();
$('#page1').show().addClass('current');
};
function loadPage2() {
$('.current').hide();
$('#page2').show().addClass('current');
};
function loadPage3() {
$('.current').hide();
$('#page2').show().addClass('current');
};
</script>
</body>
1)首先,我们显示 page1 块的类为“current”,其他块的类为“hidden” 2)当我们点击loadPage2()时,我们找到当前活动的块(通过它的“current”类)并隐藏它,并显示page2块。
NB。我必须为第一个页面块使用隐藏的附加类,因为 $(document).ready(function() {$('#page2').hide();$ ('#page3').hide();});似乎有点慢,用户可能会在页面完全加载之前注意到一些奇怪的东西。
虽然我的解决方案有效,但也存在一些问题:
*1)*实际上,对于没有 JS 的用户,我仍然需要做真正的页面,只是显示不同的起始块。这意味着我将不得不做很多相似的页面,但有一个区别——隐藏和显示不同的起始块。如果 Google 抓取我的网站,它会不会认为我的网站内容加倍并禁止它?
*2)*例如,第 2 页有大图。当页面开始时 - 它是隐藏的。但是,即使一开始不会显示,也需要很长时间才能加载它。如何管理它?按需加载内容?我的意思是ещ创建6个模板文本文件,当用户请求页面时,JS从文件中加载页面内容并将其放入div中?
可能看起来有点乱,但提前谢谢!
【问题讨论】:
标签: javascript jquery ajax templates