Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在页脚中加载条件库时基于PHP调用Javascript_Php_Javascript_Jquery - Fatal编程技术网

在页脚中加载条件库时基于PHP调用Javascript

在页脚中加载条件库时基于PHP调用Javascript,php,javascript,jquery,Php,Javascript,Jquery,我在php页面的正文中有以下内容: <?php if($foo) : ?> <script> js_func(); </script> <?php else: ?> //Do Something else <?php endif; ?> js_func(); //做点别的 基于PHP条件,我要么运行,要么不运行js_func() 但是,如果我在页面底部加载所有脚本(包括定义js_fu

我在php页面的正文中有以下内容:

<?php if($foo) : ?>

    <script>
        js_func();
    </script>

<?php else: ?>

    //Do Something else

<?php endif; ?>

js_func();
//做点别的
基于PHP条件,我要么运行,要么不运行js_func()

但是,如果我在页面底部加载所有脚本(包括定义js_func()的脚本),这将导致错误

一种可能的解决方案是在调用js_func()之前加载外部脚本,但我知道出于性能原因,我不应该这样做

我可以使用$(document).ready(function(){});但这只是移动了错误,因为jQuery也加载到了页脚中

我能想到的唯一其他选择是使用window.onload或从不内联调用js函数。其他人如何解决这个问题

非常感谢

编辑:

@尼罗河-我不知道你的意思。为什么我要注释掉我想要执行的代码? @haynar1658-我不想在else场景中执行JS。
@马修·布兰卡特——明白了。这就引出了我的问题,在实例化该函数之前,确保加载所需js的最佳方法是什么?在它之前包含脚本?使用window.onload?等等。

只需将脚本移到顶部即可

差异(如果有)非常小。

认为将
s
放在
中会减慢页面速度的观点并不是所有开发人员都“接受”的

只需将脚本移到顶部即可

差异(如果有)非常小。

认为将
s
放在
中会减慢页面速度的观点并不是所有开发人员都“接受”的

您是否尝试在PHP中响应它

<?php if($foo) {
echo "<script> js_func(); </script>";
}else{
echo "something else";
}

您是否尝试在PHP中回显它

<?php if($foo) {
echo "<script> js_func(); </script>";
}else{
echo "something else";
}

我想你是在自作主张。根据您描述的问题,您希望将所有函数定义脚本块放在调用它们的位置之后。这是不可能的
如果您确实需要这样做,这是否有帮助

<script>    
    var fns = []; /* use fns to keep all the js code  
                     which call the functions defined after. */  
</script>


<script>
    //wrapp your code in a function and then push it into fns.   
    fns.push(function(){  
        js_func();  
    }) 
</script>


//script tags for loading your function  definition js script.  
<script src="path/to/jquery-any-version.js"></script>  
<script src="path/to/other-libraries.js"></script>


<script>
    //after your definition js scripts are loaded ,  call all functions in fns  
    for(var i=0, len=fns.length; i<len; i++){  
        var fn = fns[i];  
        fn.apply(this, []/* arguments that provided  as an array */);  
    }
</script>

变量fns=[];/*使用fns保留所有js代码
调用在.*/
//将代码包装在函数中,然后将其推入fns。
fns.push(函数(){
js_func();
}) 
//用于加载函数定义js脚本的脚本标记。
//加载定义js脚本后,调用fns中的所有函数

对于(var i=0,len=fns.length;i我认为您是在为自己制造一根杆子。根据您描述的问题,您希望将所有函数定义脚本块放在调用它们的位置之后。这是不可能的!
如果您确实需要这样做,这是否有帮助

<script>    
    var fns = []; /* use fns to keep all the js code  
                     which call the functions defined after. */  
</script>


<script>
    //wrapp your code in a function and then push it into fns.   
    fns.push(function(){  
        js_func();  
    }) 
</script>


//script tags for loading your function  definition js script.  
<script src="path/to/jquery-any-version.js"></script>  
<script src="path/to/other-libraries.js"></script>


<script>
    //after your definition js scripts are loaded ,  call all functions in fns  
    for(var i=0, len=fns.length; i<len; i++){  
        var fn = fns[i];  
        fn.apply(this, []/* arguments that provided  as an array */);  
    }
</script>

var fns=[];/*使用fns保留所有js代码
调用在.*/
//将代码包装在函数中,然后将其推入fns。
fns.push(函数(){
js_func();
}) 
//用于加载函数定义js脚本的脚本标记。
//加载定义js脚本后,调用fns中的所有函数

对于(var i=0,len=fns.length;iirrelevant,但是为什么不有条件地添加
/
(注释)在js语句之前,而不是完全删除它?似乎您忘记了在
ELSE
语句中添加
标记,也许这就是问题所在?如果在这两种情况下您都要输出js,那么请将
标记移动到顶层操作…您绝对需要加载定义js_func()的脚本在实例化该函数之前。最好在页面底部加载js,但将PHP代码移到该函数下方不会降低性能。不相关,但为什么不有条件地添加
/
(注释)在js语句之前,而不是完全删除它?似乎您忘记了在
ELSE
语句中添加
标记,也许这就是问题所在?如果在这两种情况下您都要输出js,那么请将
标记移动到顶层操作…您绝对需要加载定义js_func()的脚本在实例化该函数之前。最好在页面底部加载js,但将PHP代码移到下面不会降低性能。使用PHP进行响应不会有什么区别,因为PHP将在浏览器呈现内容之前执行。您提供了一种不同的方法来创建完全相同的问题。Ec使用PHP不会有任何区别,因为PHP将在浏览器呈现内容之前执行。您提供了一种不同的方法来创建完全相同的问题。我不认为这是您可以“拒绝”的事情—加载外部js文件会阻止加载其他资产。或者我是这么想的。是否要详细说明或引用该opi的来源nion?@adampetrie.jQuery精简版的重量是32KB。现在你认为这会对用户产生任何影响吗???我不认为这是你可以“拒绝”的事情——加载外部js文件会阻止加载其他资产。或者我是这么想的。你想详细说明或引用来源吗?@adampetrie.jQuery精简版的重量是32KB。现在你可以吗你认为这会对用户有任何影响吗???谢谢Klvoek。我认为“你在为你自己的背部制作一根棍子”是这个答案中最重要的部分。谢谢Klvoek。我认为“你在为你自己的背部制作一根棍子”是这个答案中最重要的部分。