gpt4 book ai didi

php - 如何让一个php函数等到脚本结束才执行

转载 作者:行者123 更新时间:2023-11-30 06:42:19 25 4
gpt4 key购买 nike

我正在尝试为 javascript 文件创建一个队列函数。基本上,这是我希望它工作的方式:我想创建一个函数,它将接收所有发送给它的 javascript 并将它们放在页面上的适当位置(即页眉或页脚,以及依赖脚本之上)。

我想说:这是一个脚本。把它按照应该在的顺序加入到队列中。然后,当所有的脚本都排队后,运行函数将它们写入页面。到目前为止,我的代码如下所示:

$scripts = array();
function enqueue_script($src="", $script_name="", $script_data="",
$script_dependencies=array(), $force_header=false, $additional_atts=array()){
global $scripts;
//run check for duplicates

//run check for dependencies already in the variable

//run checks to see if this script depends on other scripts
//$scripts array is saved in increments of 10 to allow for up to
//9 dependants

$i = count($scripts);
$i = ($i*10)+10;
$scripts[$i]['src'] = $src;
$scripts[$i]['script_name'] = $script_name;
$scripts[$i]['script_data'] = $script_data;
$scripts[$i]['dependencies'] = $script_dependencies;
$scripts[$i]['force_header'] = $force_header;
$scripts[$i]['atts'] = $additional_atts;

}
function write_scripts_header() {
global $scripts;
$echo = "";
$atts = "";
//create script tag for insertion in header
foreach($scripts as $s){
if($s['force_header']){
foreach($s['atts'] as $a => $v){
$atts .= " {$a}='{$v}'";
}
if($s['src']!=""){
$echo .= "<script src='{$s['src']}'{$atts}></script>\n";
} else {
$echo .= "<script{$atts}>{$s['script_data']}</script>\n";
}
}
}
echo $echo;
}
function write_scripts_footer() {
global $scripts;
$echo = "";
$atts = "";
//create script tag for insertion in footer
foreach($scripts as $s){
if(!$s['force_header']){
foreach($s['atts'] as $a => $v){
$atts .= " {$a}='{$v}'";
}
if($s['src']!=""){
$echo .= "<script src='{$s['src']}'{$atts}></script>\n";
} else {
$echo .= "<script{$atts}>{$s['script_data']}</script>\n";
}
}
}
echo $echo;
}

然后,在HTML文件部分:

<html>
<head>
<?php write_scripts_header();?>
</head>
<body>
<?php write_scripts_footer();?>
</body>
</html>

如果 HTML 部分是最后加载的,这会很好地工作。但是,如果我有一个包含发生在 body 标记的中间,并且包含需要 enqueue_script() 在 header 中,那么 $scripts 变量不是当 write_scripts_header() 函数运行时准备就绪。

如何让 write_scripts_header()write_scripts_footer() 等到所有脚本都已排队后才运行?或者....有没有更好的方法允许脚本队列,以便我可以在最后将所有脚本写入文档?

最佳答案

如果它都在同一个文件中运行,你能不能让正文内容成为一个变量,$body,先加载它,然后将它回显到<body>中?部分?

关于php - 如何让一个php函数等到脚本结束才执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10132230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com