Могу ли я использовать скрипт, чтобы проверить, загружен ли JS-файл?
У меня есть функция, которая размещает форму на странице с элементами управления javascript. Я не знаю, где пользователь будет использовать эту форму, и она может быть загружена несколько раз на страницу. Это поражает меня как лучший способ справиться с ситуациями, если сама форма загружает скрипт, поэтому он не загружается, если не нужен, но это заставляет меня проверить, загружен ли сценарий, чтобы не перезагружать и не добавлять к загрузке страницы времени и использования полосы пропускания.
Нет. Страница не видна, пока скрипт PHP не очистит весь свой результат, и к этому времени уже слишком поздно что-либо делать. Но большинство браузеров достаточно умны, чтобы в любом случае загружать внешний ресурс один раз на страницу.
У вас должна быть система управления активами на вашем PHP, чтобы увидеть, что включено в эту страницу.
Ультра простой пример (полученный из ссылки ):
<?php class Page { private static $head = array(); private static $js_assets = array(); private static $content = ''; static function add_head($tag) { self::$head[] = $tag; } static function render_head() { foreach (self::$head as $tag) echo $tag; foreach (self::$js_assets as $js) echo '<script src="'.$js.'" type="text/javascript"></script>'; } static function render_content() { echo self::$content; } static function read_content($file) { ob_start(); require $file; self::$content = ob_get_clean(); } static function render_layout($file) { require $file; } static function add_js($js) { if (!in_array($js, self::$js_assets)) { self::$js_assets[] = $js; } } } Page::add_js('/javascripts/application.js'); Page::read_content('view.php'); Page::render_layout('layout.php'); ?>
layout.php:
<html> <head><?php Page::render_head(); ?></head> <body> <div id="header"></div> <div id="content"><?php Page::render_content(); ?></div> <div id="footer"></div> </body> </html>
view.php:
<?php Page::add_head('<title>Hello World!</title>'); ?> <h1>Hello</h1> <p>World</p>