如何检查php网站是否完全加载了JS

时间:2015-07-06 14:37:12

标签: javascript php jquery callback

所以我有一个index.php,里面我有一些像这样的Div:

<div id="thisDiv">
    <?php ?>
<div>

在另一个JS文件中,我有一个divRefresh函数,如下所示:

function divRefresh(id, path){
    $(id).load(path, function(){
        functionToBeCalledWhenLoaded();
    });
}

其中ID是div的id,PATH是php文件在服务器中的路径。

我的问题是,即使我的load()页面已完全加载,functionToBeCalledWhenLoaded()函数也会调用.php

尝试解决方案:
回调函数。
内联<script>来电。 (这个解决方案只与一些人合作)
jquery ready()onload()load()

如何在调用JS函数之前检查我的php页面是否已完全加载?

2 个答案:

答案 0 :(得分:2)

似乎DOM已准备好,而PHP服务器仍然发送数据。在这里,您可以提出一些可能说服浏览器了解情况的建议。首先,尝试将其关闭再打开。如果它没有帮助:

建议1

尝试发送header("Content-Length: ...") - 它可能会说服浏览器等到所有数据都发送完毕。当然,...是生成的HTML的字节大小。

建议2

尝试使用输出缓冲:

<?php ob_start();?>
<div id="thisDiv">
    <?php ?>
<div>
<?php ob_end_flush();?>

服务器将等待html完全生成,然后它会将其发送到客户端,因此最后的数据将是...</html>,之后DOM将准备就绪,之后JS加载将启动。至少我希望如此。

建议3

在放入thisDiv的php代码的末尾,插入此行

<img src="pixel.gif" onload="functionToBeCalledWhenLoaded()">

其中pixel.gif是一些真正的1px不可见图像,因此该函数将在php部分完成后启动。当DOM准备好并发送相关数据时,这可能会起作用,而浏览器会等待更多数据。

最后,但并非最不重要的是,它可能是一些缓存问题。作为最后的手段,您可以使用setTimeout(functionToBeCalledWhenLoaded,1000)等待一秒钟,并希望页面在延迟后真正准备就绪。这将是一个很好的塑料管道反模式的例子,绝对绝望。

答案 1 :(得分:1)

如果您使用jQuery,可以将代码放在:

之间

$(document).ready(function() { }或简写版$(function(){ }

如果您不使用jquery:

window.onload = function(){ }