Javascript倒计时只在Chrome上运行

Javascript倒计时只在Chrome上运行,javascript,google-chrome,countdown,Javascript,Google Chrome,Countdown,我正在制作一个游戏,在我的游戏中,我有一个javascript倒计时脚本,它接收建筑升级结束的日期,并进行倒计时,当倒计时结束时,执行一个脚本,将建筑升级到下一个级别 但它只在谷歌chrome中工作,在其他浏览器中显示如下: Firefox: 谷歌浏览器 只有Javascript: date_default_timezone_set('europe/lisbon'); $datephp = date('Y-m-d H:i:s'); echo' <script type="te

我正在制作一个游戏,在我的游戏中,我有一个javascript倒计时脚本,它接收建筑升级结束的日期,并进行倒计时,当倒计时结束时,执行一个脚本,将建筑升级到下一个级别

但它只在谷歌chrome中工作,在其他浏览器中显示如下:


Firefox:

谷歌浏览器


只有Javascript:

date_default_timezone_set('europe/lisbon');
$datephp = date('Y-m-d H:i:s');


echo'

<script type="text/javascript">
function cdtd() {
    var xmas = new Date("' . $factory_date . '");
    var now = new Date();
    var timeDiff = xmas.getTime() - now.getTime();
    if (timeDiff <= 0) {
    clearTimeout(timer);
    $("#factory_upgrade").load("/include/factory_upgraded.php");
    $("#quantidade_fabricas").load("/include/factory_stats.php");
    }

    var seconds = Math.floor(timeDiff / 1000);
    var minutes = Math.floor(seconds / 60);
    var hours = Math.floor(minutes / 60);
    var days = Math.floor(hours / 24);
    hours %= 24;
    minutes %= 60;
    seconds %= 60;' .
    "var tempo=('0'  + hours).slice(-2)+':'+('0'  + minutes).slice(-2)+':'+('0' + seconds).slice(-2);"
    .
    '
    document.getElementById("secsBox").innerHTML = tempo;
    var timer = setTimeout("cdtd()",1000);
}
</script>
';
function factory_update($get){

$userid = $_SESSION['userid'];

$query00 = "SELECT * FROM factory_upgrading WHERE userid = '$userid'";
$result00 = mysql_query($query00) or die(mysql_error());

while($row00 = mysql_fetch_array($result00)){
$factory_upgrade = $row00['userid'];
}

if(!isset($factory_upgrade)){
echo "Sem melhoramentos.";
return 0;
}

$query01 = "SELECT * FROM factory_upgrading WHERE userid = '$userid'";
$result01 = mysql_query($query01) or die(mysql_error());

while($row01 = mysql_fetch_array($result01)){
$factory_level = $row01['new_level'];
$factory_date = $row01['upgraded'];
}


if ($get == "load")
{
echo '<div class="message_upgrades" ">';
echo '<div class="loading"><img src="/images/loading.gif"></img></div>';
echo '</div>';}

else
{

date_default_timezone_set('europe/lisbon');
$datephp = date('Y-m-d H:i:s');


echo'

<script type="text/javascript">
function cdtd() {
    var xmas = new Date("' . $factory_date . '");
    var now = new Date();
    var timeDiff = xmas.getTime() - now.getTime();
    if (timeDiff <= 0) {
    clearTimeout(timer);
    $("#factory_upgrade").load("/include/factory_upgraded.php");
    $("#quantidade_fabricas").load("/include/factory_stats.php");
    }

    var seconds = Math.floor(timeDiff / 1000);
    var minutes = Math.floor(seconds / 60);
    var hours = Math.floor(minutes / 60);
    var days = Math.floor(hours / 24);
    hours %= 24;
    minutes %= 60;
    seconds %= 60;' .
    "var tempo=('0'  + hours).slice(-2)+':'+('0'  + minutes).slice(-2)+':'+('0' + seconds).slice(-2);"
    .
    '
    document.getElementById("secsBox").innerHTML = tempo;
    var timer = setTimeout("cdtd()",1000);
}
</script>
';

echo '<div class="success_upgrades">';
echo '<div class="upgrade_text"><b>Nivel: </b>' . $factory_level . '</div><div class="div_separator"></div><div class="upgrade_text"><b>Duração:</b>
 <div class="secsBox" id="secsBox"></div>
<script type="text/javascript">cdtd();</script></div><div class="div_separator"></div>
';
echo '<div id="close" class="stop_upgrade" ><a href="#" id="close" ><img src="/icon/x.png"></img></a></div>';
echo '</div>';

echo '<script>


    $(".stop_upgrade").click(function (e) {
    e.preventDefault();
    $(factory_upgrade2).empty();



    setTimeout(function(){
    $("#factory_upgrade2").load("/include/upgrade_cancel.php");
    $("#factory_upgrade").load("/include/factory_update.php");
    $("#load").load("/include/cabecalho_content.php");
    $("#industrial").fadeIn();
                $(loader1).delay(1000).hide(0);
                }, 100);


    });


    </script>
    ';
}
}    
date\u default\u timezone\u set(“欧洲/里斯本”);
$datephp=date('Y-m-dh:i:s');
回声'
函数cdtd(){
var xmas=新日期(“.$factory_Date.”);
var now=新日期();
var timeDiff=xmas.getTime()-now.getTime();

如果(timeDiff根据标准JavaScript,
$factory\u date
的格式无效,Chrome恰好能够解析它

为了获得更好的结果,请坚持使用以下
Date
构造函数:

new Date();
new Date(value);
new Date(dateString);
new Date(year, month [, day, hour, minute, second, millisecond]);

为什么你要做PHP中的输出,你不能用NOS或JS脚本文件来做吗?我必须把PHP变量放在JavaScript的中间,所以我认为这样更好:一个典型的<代码> $FasyYORDEX看起来像什么?Firefox控制台中的任何错误?它在IE中工作吗?$FasyYyDA的典型结果是什么?可能是因为它的格式不适合浏览器,因为它可能是字符串或整数etcIf变量$factory_date=2013-12-30 22:21:01,我怎样才能为所有浏览器提供良好的格式?请阅读我的文章和我提供的链接。解释了不同的有效
dateString
。您可以随时使用任何PHP对象表示提取年/月/日/小时/分钟/秒并使用最后一个构造函数的日期。请注意,在JavaScript中,月参数是基于0的。可能还有一种简单的方法可以在PHP中获取unix历元时间戳,您可以使用它。避免
新建日期(dateString)
由于它在浏览器中的实现并不一致,其他浏览器也可以。