簡體   English   中英

從外部文件動態包含JavaScript-PHP

[英]Dynamically include JavaScript from external file - PHP

在此先感謝您的幫助。 我很難保持代碼庫整潔。 我想避免PHP,HTML和CSS混雜在一起。

目前,我的主站點分為多個較小的選項卡。 進行ajax調用后,將動態包含這些選項卡的PHP代碼。

elseif (file_exists('templates/custom/'.$center."/".$section."/".$tab.".php")) {
 include 'templates/custom/'.$center."/".$section."/".$tab.".php";
 }

效果很好,但我也想從外部文件中動態包含JavaScript。 在我看來,它將像這樣工作,

elseif (file_exists('templates/custom/'.$center."/".$section."/".$tab.".php")) {
 include 'templates/custom/'.$center."/".$section."/".$tab.".php";
 include 'templates/custom/'.$center."/".$section."/".$tab.".js";
 }

如何在用戶仍然希望將JavaScript按標簽分開的情況下,根據用戶想要轉到的標簽動態地包含javascript。

我花了整整一天的時間研究這個問題,並不斷遇到類似這樣的示例,

echo "<script language='javascript' type='text/javascript'>";
echo "alert('hello worldio');";
echo "</script>";
$URL="page.php";
echo "<script>location.href='$URL'</script>";

該站點是單頁應用程序。 再次感謝!

php函數不能包含Javascript文件。 使用下面的代碼

elseif (file_exists('templates/custom/'.$center."/".$section."/".$tab.".php")) {
 include 'templates/custom/'.$center."/".$section."/".$tab.".php"; 
 $file_path = "javascript external file path"; // replace with correct file path
?>
 <script language="JavaScript" type="text/javascript" src="<?php echo $file_path;?>"></script>
 <?php } ?>

只需print <script>標記以包括它:

 print '<script src="templates/custom/'.$center.'/'.$section.'/'.$tab.'.js'" type="text/javascript"></script>';

您好,在我的情況下,我使用模塊基礎模板,這些模板分為較小的部分。我在我的網站中有3個主要的UI部分。1。所有模板的jquery,bootstrap等公共模板都必須放在這里。樣式或模板具有一個js文件夾,該模板的所有公共js文件都必須在該文件夾中。3。模板中的每個模塊都具有該模塊專用js的js文件夾,我也必須在CSS中執行該操作。實際上,當我加載模塊時檢查所有此文件夾

array_slice(scandir($st_css_style_public_path), 2)

並創建CSS鏈接或JS腳本,並在我的頁面中打印地址的最終字符串。 但是有時候您需要直接向頁面中注入代碼,我使用了一個文件夾和一個名為plugins-> plugins.php的文件,將所有腳本放到那里,得到了內容並將其打印到我的頁面中

`$st_plugins .= (file_exists($st_plugin_style_public_path) ) ? file_get_contents($st_plugin_style_public_path) : ' ';

在我看來,我所有的render方法是這樣的:

public function render($address, $data = '', $cache = 1, $showstyle = 1) {
        $data['LINKPREFIX'] = '/' . $this->current_holding_unique_name
                . '/'
                . $this->current_lang;
        if (isset($address)) {
            $path = explode('/', $address);
            $path[0] = $path[0];
            $path[1] = $path[1];
        }
        $template = $this->twig->loadTemplate($path[0] . DS . $path[1] . '.twig');
        if ($showstyle) {
            $css_links = '';
            $js_links = '';
            $st_plugins = '';

            //##################################################
            //########################## CREATING CSS,JS ADDRESS
            //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            //####### SITE PUBLIC CSS & JS FILES
            $st_js_public_path = '.' . DS . PUBLIC_DIR . DS . $this->set_address($path[0]) . 'js';
            $st_css_public_path = '.' . DS . PUBLIC_DIR . DS . $this->set_address($path[0]) . 'css';

            if (file_exists($st_js_public_path) && is_dir($st_js_public_path)) {
                $ar_public_jsfile_list = array_slice(scandir($st_js_public_path), 2);
                foreach ($ar_public_jsfile_list as $js_file_name) {
                    $js_links .= $this->create_css_js_link($st_js_public_path . DS . $js_file_name, 'js');
                }
            }
            if (file_exists($st_css_public_path) && is_dir($st_css_public_path)) {
                $ar_public_cssfile_list = array_slice(scandir($st_css_public_path), 2);
                foreach ($ar_public_cssfile_list as $css_file_name) {
                    $css_links .= $this->create_css_js_link($st_css_public_path . DS . $css_file_name, 'css');
                }
            }

            //####### STYLE PUBLIC CSS & JS & PLUGINS FILES
            $st_js_style_public_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . 'public' . DS . $this->current_direction . DS . 'js';
            $st_css_style_public_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . 'public' . DS . $this->current_direction . DS . 'css';
            $st_plugin_style_public_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . 'public' . DS . $this->current_direction . DS . 'plugins' . DS . 'plugins.php';
            if (file_exists($st_css_style_public_path) && is_dir($st_css_style_public_path)) {
                $ar_cssfile_list = array_slice(scandir($st_css_style_public_path), 2);
                foreach ($ar_cssfile_list as $css_file_name) {
                    $css_links .= $this->create_css_js_link($st_css_style_public_path . DS . $css_file_name, 'css');
                }
            }
            if (file_exists($st_js_style_public_path) && is_dir($st_js_style_public_path)) {
                $ar_jsfile_list = array_slice(scandir($st_js_style_public_path), 2);
                foreach ($ar_jsfile_list as $js_file_name) {
                    $js_links .= $this->create_css_js_link($st_js_style_public_path . DS . $js_file_name, 'js');
                }
            }
            $st_plugins .= (file_exists($st_plugin_style_public_path) ) ? file_get_contents($st_plugin_style_public_path) : ' ';
            //####### MODULE CSS & JS FILES
            $st_js_style_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . $path[0] . DS . $this->current_direction . DS . 'js';
            $st_css_style_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . $path[0] . DS . $this->current_direction . DS . 'css';
            $st_plugin_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . $path[0] . DS . $this->current_direction . DS . 'plugins' . DS . 'plugins.php';
            if (file_exists($st_css_style_path) && is_dir($st_css_style_path)) {
                $ar_cssfile_list = array_slice(scandir($st_css_style_path), 2);
                foreach ($ar_cssfile_list as $css_file_name) {
                    $css_links .= $this->create_css_js_link($st_css_style_path . DS . $css_file_name, 'css');
                }
            }
            if (file_exists($st_js_style_path) && is_dir($st_js_style_path)) {
                $ar_jsfile_list = array_slice(scandir($st_js_style_path), 2);
                foreach ($ar_jsfile_list as $js_file_name) {
                    $js_links .= $this->create_css_js_link($st_js_style_path . DS . $js_file_name, 'js');
                }
            }
            $st_plugins .= (file_exists($st_plugin_path) && $showstyle ) ? file_get_contents($st_plugin_path) : ' ';

            //################################################
            //################################################
            //################################################
            //################################################
            //@ @   @ CREATING CSS,JS ADDRESS
            $data['VARCSSADDR'] = $css_links;
            $data['VARJSADDR'] = $js_links . $st_plugins;
            $data['VARURL'] = '/';
            $data = array_merge($data, lang_translate::$lang);
            $template->display($data);
        } else {
            //$ar_langpropr = language::$ar_lanuage[session::get('current_lang')];
            //$data['lang_code'] = $ar_langpropr['lang_code'];
            $data = array_merge($data, lang_translate::$lang);
            return $this->twig->render($address . '.twig', $data);
        }
    }

我正在使用樹枝模板引擎,所以這里有一些與您的問題無關的代碼;其他部分是針對ajax調用的。 結論:1-您可以使用此結構從模塊中添加或刪除文件,就像從其文件夾中復制或刪除文件一樣容易。 2-您可以使用它來創建正確的js或css,以通過ajax創建地址並將其打印在代碼中

我希望它能對您有所幫助,如果您需要,請不要猶豫,提出更多問題

PHP include()在服務器端。

JavaScript是客戶端。

因此,不能在JavaScript上使用include()。

但是,如果您想用所需的URL加載JavaScript,請使用以下命令: $url = "JAVASCRIPT URL HERE"; echo('<script src="'. $url .'"></script>'); $url = "JAVASCRIPT URL HERE"; echo('<script src="'. $url .'"></script>');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM