Javascript与PHP包含文件不一致

时间:2012-09-01 02:57:42

标签: php javascript

我有一个非常简单的javascript动画,看起来像这样

$(function() {
$('#slider1').cycle();
$('#slider2').cycle();
});

然后我就这样在这个脚本中调用了这个:

<script type="text/javascript" src="js/slider.js"></script>

然后具有id“slider1”和“slider2”的div包含在php包含文件中,这些文件被调用到页面中,如下所示:

<?php include('assets/col1.php'); ?>

包含文件中的代码如下所示:

<div id="slider1">
<img src="images/image1.png" />
<img src="images/imgae2.png" />
<img src="images/image3.png" />
<img src="images/image4.png" />
</div>

除了进入IE8或IE9之外,哪个工作正常。 javascript将在75%的时间内工作,这就是为什么这让我感到困惑。当您加载页面或返回页面时,每隔一段时间它就不会激活javascript并且所有图像都在一个长列中呈现(基本上它看起来没有js函数)

我怀疑IE9加载PHP和javascript的顺序,但我只是js和php的新手,所以一些非常明确的帮助,如何解决这个问题真的很棒。提前谢谢。

2 个答案:

答案 0 :(得分:1)

Soooo长篇故事......

PHP将返回解释的HTML。每次包含文件时,PHP都会刷新缓冲区,这意味着某些内容会先于其他内容返回给浏览器。发生这种情况时,页面仍处于加载状态。

因此,您需要确保拨打$(document).ready(function(e){ ... });。这将使代码有机会在执行javascript之前完成刷新缓冲区并加载到浏览器中。

答案 1 :(得分:0)

我在使用Dojo时遇到了类似的问题,我解决了如下问题: 将main或父div显示样式设置为none:

<div id="g_body" style="display:none">

现在一旦Dojo完成加载,我使用dojo.ready函数将显示样式更改为阻止:

require(["dojo/ready", "dojo/parser", "dijit/registry"], function(ready, parser, registry){
  ready(function(){
    if(document.getElementById("g_body")!= null){
        document.getElementById("g_body").setAttribute("style","display:block");
    }
  });
});

然后页面仅显示何时完全加载Dojo元素。

我相信jQuery中有类似的东西,但我不确定。大概是:

$(document).ready(function() {});

希望这有帮助。