我想包括在多个页面相同的导航菜单,但是我没有PHP的支持,我也不能影响到我的服务器以任何其他方式。
我想避免简单地复制和粘贴HTML到所有页面,因为这将使更新菜单中的痛苦。
是我能想到的两个选项,如下所示:
1)拥有所有的内容存在一个页面上,然后确定基于附加到网址的关键字,以显示其内容:
example.com/index?home
example.com/index?news
2)包括有写出来的菜单功能的JavaScript文件并调用每个页面上的功能
function setupMenu() {
$("#nav").html("<ul class='nav'><li>home</li><li>news</li></ul>");
}
与选项1,更新过程将在一个页面上包含一个编辑导航菜单的
对于选项2,更新就意味着在JavaScript文件改变功能
我与选项1关注的是,该网页将需要加载很多,它不会需要显示的内容。 我对选项2的关注似乎微不足道,但它的代码会导致混乱。
是否有这样做的一种方式是优于其他任何原因? 还是有我失踪第三优越的选择吗?
是使用.load jQuery的AJAX功能
$('#result').load('ajax/menu.html');
这样,你的代码保持干净,你可以编辑包括单独的HTML文件,就像PHP。
您应该考虑AJAX这个任务。 包括第三方库像jQuery和加载单独的HTML文件中的占位符,通过ID针对他们。
例如,在主HTML页面:
<div id="mymenu"></div>
此外,在主HTML,但在头部分:
$('#mymenu').load('navigation.html');
但是你最好的选择将切换到支持PHP或任何其他服务器端包含托管。 这会让你的生活变得更加简单。
看看服务器端包含 。 我没有一大堆的与他们的经验,但是从我记得,它们被设计成一个解决方案,只是你的问题。
您可以使用HTML进口http://w3c.github.io/webcomponents/spec/imports/
下面是一个例子http://www.html5rocks.com/en/tutorials/webcomponents/imports/
warnings.html
包含
<div class="warning">
<style scoped>
h3 {
color: red;
}
</style>
<h3>Warning!</h3>
<p>This page is under construction</p>
</div>
<div class="outdated">
<h3>Heads up!</h3>
<p>This content may be out of date</p>
</div>
随后index.html
可能包含
<head>
<link rel="import" href="warnings.html">
</head>
<body>
...
<script>
var link = document.querySelector('link[rel="import"]');
var content = link.import;
// Grab DOM from warning.html's document.
var el = content.querySelector('.warning');
document.body.appendChild(el.cloneNode(true));
</script>
</body>
服务器端包括: http://www.freewebmasterhelp.com/tutorials/ssi/