Обзор:
Я использую следующий шаблон страницы и скрипты для навигации. Я использую одну страницу, которая загружает меню и контекстное содержимое, а затем использую переменную ajax или GET для загрузки содержимого main-div, передав переменную $ p переключателю php. История браузера обрабатывается с помощью функции pushState.
Главная страница:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="main-div">
<?php
if (isset($_GET['p'])) {
$p = $_GET['p'];
} else {
$p = "main";
}require_once("assets/switch.php");
?>
</div>
<script>
// Define state on first load
function defineState() {
"use strict";
window.history.replaceState("<?php echo $p ?>", "", "");
}
window.onload = defineState;function navegacion(dashboard, history) {
"use strict";
var urlPath = dashboard;
var xmlhttp;
var ActiveXObject;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
window.scrollTo(0, 0);
//document.title = "TITLE";
document.getElementById("main-div").innerHTML = xmlhttp.responseText;
if(history !== 1) {
window.history.pushState(dashboard, "", "index.php?p="+urlPath);
}
}
};
xmlhttp.open("POST","assets/ajaxapi.php", true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("dashboard="+dashboard);
}
// Allows for back and forward browswe buttons
window.onpopstate = function(e){
"use strict";
if(e.state){
navegacion(e.state, 1);
}
};</script>
</body>
</html>
ajaxapi.php:
<?php
if (isset($_POST['dashboard'])) {
$p = $_POST['dashboard'];
} else {
$p = NULL;
}
require_once("./switch.php");
Есть ли проблемы с производительностью этого кода, или как этот скрипт может быть улучшен?
Благодарю.
Задача ещё не решена.
Других решений пока нет …