Вы можете удалить прослушиватели событий только на внешних функциях. Вы не можете удалить прослушиватели событий для анонимных функций, как вы использовали.
Замените этот код
window.addEventListener('scroll', () => { ... };
и сделайте это вместо этого
window.addEventListener('scroll', someFunction);
Затем переместите свою функциональную логику в функцию
function someFunction() {
// add logic here
}
Затем можно удалить щелкните прослушиватель, когда выполняется какое-то условие, т.е. когда элемент находится в области просмотра
window.removeEventListener('scroll', someFunction);
Небольшой известной функцией PHP является способность рассматривать, включал/требовал файл как вызов функции, с возвращаемым значением.
Например:
// myinclude.php
$value = 'foo';
$otherValue = 'bar';
return $value . $otherValue;
// index.php
$output = include './myinclude.php';
echo $output;
// Will echo foobar
Из того, что я могу сказать в документации PHP, нет. Почему Вы хотите избежать выходной буферизации?
Единственным способом обойти это были бы hacky методы, включающие или вызывающие командную строку php клиент или делающие вихревой запрос на основе того, что доступно и каковы конкретные требования.
После чтения общих предложений, чтения набора документации и проигрывания вокруг с некоторыми вещами, я придумал это:
<?php
$file = file_get_contents('/path/to/file.php');
$xhtml = eval("?>$file");
?>
Это настолько близко, как я мог добраться, но это, к сожалению, не работает. Ключ к этому должен включать закрытие, которое укусил PHP (?>
) перед содержанием файла. Это возьмет eval()
из режима PHP-оценки и будет рассматривать содержание файла, запускающегося как non-PHP код. Затем, если будут блоки кода PHP в файле, то они будут оценены как PHP. Неприятность - то, что это не сохраняет eval'd содержание в переменной, это просто производит его к странице.
Спасибо за справку все!
Сделайте вихревой запрос к php странице, по существу симулировав быть браузером.
То, что Вы могли сделать, если файл локален, является загрузкой сценарий в переменную как строка, то выполненная оценка на строке. Затем можно сделать весь другой материал впоследствии. Иначе необходимо использовать выходную буферизацию.
Joeri Sebrechts корректен. Эквивалентный и немного более легкий метод доступен, если Сценарием PHP является доступный HTTP:
$data = file_get_contents('http://google.com/');
Нужно отметить, что использование выходной буферизации было бы легче на ресурсах.
$fileData = file_get_contents('fileOnDisk.php');
$results = eval($fileData);
Но проверьте документацию относительно оценки, потому что у Вас на самом деле должен быть файл, Вы называете возврат его результатами, а не просто повторяете их: