<?php
session_start();
$phrase = $_SESSION['phrase']; // Подсвечиваемая фраза
// --- begin script ---
$script = "
<script>
function scrollReset() {
currentElem = 0;
positions = [];
document.removeEventListener('keydown', searchNavigationHandler);
}
function myScroll(evt, direction){
evt.preventDefault();
if (direction === 'prev' && currentElem > 0) currentElem--;
if (direction === 'next' && currentElem < positions.length) currentElem++;
window.scroll({ top: positions[currentElem], behavior: 'instant' });
}
function searchNavigationHandler(evt) {
key = evt.which ? evt.which : evt.keyCode;
switch (key) {
case 38: myScroll(evt, 'prev'); break;
case 40: myScroll(evt, 'next'); break;
case 27: scrollReset(); break;
}
}
function HighLight(phrase) {
scrollReset();
re = new RegExp(phrase, 'gi');
document.body.innerHTML = document.body.innerHTML.replace(re, '<span class=highlight>'+phrase+'</span>');
eL = document.body.innerHTML;
positions = [...document.body.querySelectorAll('.highlight')].map(eL=>eL.offsetTop);
document.addEventListener('keydown', searchNavigationHandler);
window.scroll({top: positions[0], behavior: 'instant' });
}
window.onload = HighLight($phrase);
</script>
"; //--- end script ---
$html = file_get_contents($path_html_title);
$script_html = str_replace('</body>', $script. '</body>', $html);
$script_html = str_replace('</head>', '<style type="text/css">.highlight{background:orange;}</style></head>', $script_html);
echo $script_html;
?>
window.addEventListener('keypress', searchNavigationHandler)
function searchNavigationHandler(evt) {
let key = evt.which ? evt.which : evt.keyCode;
switch (key) {
case 38:
prev();
break;
case 40:
next();
break;
case 27:
window.removeEventListener('keypress', searchNavigationHandler)
break;
}
}
window.scroll({
top: 1000, // координата якоря по высоте
behavior: "smooth"
});
$(якорь).position().top
eval('/'+phrase+'/gi')Поздравляем, у вас XSS и ваших посетителей уже ломают, а антивирусы и браузеры помечают ваш сайт как вредоносный. В общем с eval'ом поосторожнее, нужно тщательно фильтровать фразу.