2010-10-20 9 views
1

Puis-je utiliser un script pour vérifier si un fichier JS est chargé?en utilisant php to check est un fichier javascript a été chargé?

J'ai une fonction, qui place un formulaire sur une page avec des contrôles javascript. Je ne sais pas où l'utilisateur va utiliser ce formulaire, et il pourrait être chargé plusieurs fois dans une page. Cela me semble être la meilleure façon de gérer les choses si le formulaire charge le script, donc il ne charge pas si nécessaire, mais cela m'amène à vérifier si le script est déjà chargé pour éviter le rechargement et l'ajout au chargement de la page temps et l'utilisation de la bande passante.

Répondre

3

Non. La page n'est pas visible tant que le script PHP n'a pas vidé toute sa sortie, ce qui fait qu'il est trop tard pour faire quoi que ce soit. Mais la plupart des navigateurs sont suffisamment intelligents pour charger une ressource externe une seule fois par page.

+0

par la plupart des navigateurs, savez-vous qui sont des exceptions? –

+0

Je pense qu'il y en avait un de retour en 1998 ou alors ça ne l'a pas fait. –

+0

c'est faux, un navigateur ne chargera une ressource qu'une fois si vous lui dites de ne la charger qu'une seule fois. – Petah

2

Vous devriez avoir un système de gestion d'actifs dans votre PHP pour voir ce qui est inclus dans la page.

Ultra exemple simple (dérivé de link):

<?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> 
Questions connexes