编程语言
首页 > 编程语言> > PHP / JavaScript.即使所有资源下载完毕,浏览器也会永久“加载”,此外还有Opera / Chrome问题

PHP / JavaScript.即使所有资源下载完毕,浏览器也会永久“加载”,此外还有Opera / Chrome问题

作者:互联网

我的页面执行以下操作:

>浏览器将加载一个非常简单的页面,其中包含有效的头部和正文,并且仅包含一个脚本/脚本对.
>在主体中,它具有运行onLoad函数的脚本(脚本a).该函数动态包含第二个脚本(脚本b),并在可用时在其中运行一个函数.
>第二个脚本是执行各种工作的.js文件.

这两个脚本均由PHP解析,并使用application / x-javascript内容类型.

现在,除了几个JS打ic之外,我所有这些工作都很好. JavaScript并不是我的强大语言之一,因此我希望这些都是简单的问题,有人可以为我指出正确的方向.

问题1:如果我执行简单的警报(“您在脚本b中”);在第二个脚本中,它按预期工作.但是,如果我做其他任何事情,它都可以正常工作,然后浏览器会一直指示它永远加载.这是Firefox中的补间色,或IE中的旋转色.

我尝试以不同的方式结束脚本,但似乎无济于事.知道如何向浏览器指示脚本已全部加载吗?这是一个.js文件,必须通过PHP进行解析.

问题2:Opera或Google Chrome中似乎根本没有包含第二个脚本.除了加载问题外,在FF / IE中工作正常.谁能看到Im在第二个脚本的加载中是否使用了不兼容的东西?

谢谢!

更新:

感谢您的回答.我实际上有萤火虫,这就是为什么我知道一切都正常运行的原因(至少在FF中如此).我实际上不知道该脚本无法在Opera / Chrome中运行,但是什么也没发生.

这是相当多的代码= o)我将从Firebug中复制实际的响应并将其发布,这样您就可以准确地看到代码是什么.至于关闭服务器的网络服务器,我也在想,但是如果我将脚本b设置为alert(‘whatever’),这似乎很奇怪.它会发出警报,然后停止加载,但是我所做的一切都完全相同,但是使脚本为document.write(‘whatever);.它将永远加载.

以下是直接从Firebug的“网络”标签复制,更新的脚本:

请注意,discoverfire.net是一个内部域,因此您将无法从那里加载任何内容…

初始HTML页面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Welcome!</title>
    <style>body { font-family:arial; }</style>
    <script language="JavaScript" type="text/javascript" src="http://www.discoverfire.net/analytics/l/a.js">
    </script>
    <script language="JavaScript" type="text/javascript">
        document.onload = Start();
        function Start(){
            TAFKing_version = '1.0';
            TAFKing_lkey = '19-8O-KKA8HV';
            TAFKing_Lander();
        }
    </script>
</head>
<body>
    <noscript>
        Oops!  We can't forward you properly because your JavaScript is turned off.<br /><br />
        <a href='http://www.discoverfire.net/analytics/l/noscript/19-8O-KKA8HV.html'>Please click here to continue.</a>
        <img src='http://www.discoverfire.net/analytics/l/imp/19-8O-KKA8HV.png' border='0' alt='tell a friend' />
    </noscript>
</body>
</html>

**脚本A(… a.js):http://www.discoverfire.net/analytics/l/a.js **

function TAFKing_Lander(){

    version = TAFKing_version;
    lkey = TAFKing_lkey;

    var scrb = document.createElement('script');
    scrb.type = 'text/javascript';
    scrb.src = 'http://www.discoverfire.net/analytics/l/b.js?lkey='+lkey+'&version='+version+'&cb=4eohe8e65'
;

    document.getElementsByTagName('head')[0].appendChild(scrb);
    Interval = setInterval("Waiter()", 10);

    return;

}

function Waiter(){
    if(window.TAFKing_LanderB) {
        clearInterval(Interval);
        TAFKing_LanderB();
    }
}

脚本B(… b.js):http://www.discoverfire.net/analytics/l/b.js?lkey=19-8O-KKA8HV&version=1.0&cb=4eohe8e65

function TAFKing_LanderB(){
    document.write("there are just a whole bunch of doc.writes here that build a simple table");
}

解决方法:

我敢打赌,这与脚本无关,但与Web服务器无关.您的描述,特别是它影响许多浏览器,其中一些甚至不运行脚本,使我相信Web服务器没有关闭连接.可能是网络服务器未正确处理HTTP / 1.1保持活动请求.

尝试在Firefox中使用Firebug.安装它,为您的页面启用它,重新加载页面并检查“ Net”选项卡上真正使连接保持打开状态的内容.

标签:cross-browser,javascript,php
来源: https://codeday.me/bug/20191210/2102968.html