2010-10-20 100 views
1

我可以使用腳本來檢查一個JS文件是否被加載?使用php來檢查是一個JavaScript文件已被加載?

我有一個函數,它將一個窗體放在一個頁面上用JavaScript控件。我不知道用戶將使用此表單的位置,並且可能會多次加載到一個頁面中。如果表單自身加載腳本,它會觸發我處理事務的最佳方式,所以如果不需要它就不會加載,但是這導致我需要檢查腳本是否已經加載以避免重新加載並添加到頁面加載時間和帶寬使用。

回答

3

不可以。直到PHP腳本刷新了所有的輸出,這個頁面纔會被看到,屆時,任何事情都爲時已晚。但是大多數瀏覽器足夠聰明,無論如何每頁僅加載一次外部資源。

+0

大多數瀏覽器,你知道哪些是異常? – 2010-10-20 09:16:02

+0

我覺得有一個在1998年左右,沒有這樣做。 – 2010-10-20 09:17:08

+0

這是錯誤的,如果你只告訴它只加載一次,瀏覽器將只加載一次資源。 – Petah 2010-10-20 09:17:44

2

您應該在PHP中擁有一個資產管理系統,以查看包含在頁面中的內容。

超簡單的例子(來自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> 
相關問題