2009-05-28 3 views
3

私は次のことを行いページを持っている:PHP/JavaScript。ブラウザの「負荷」永遠に、すべてのリソースがダウンロードが終了した後でも、プラスオペラ/クローム問題

  1. ブラウザが有効な頭と体で非常にシンプルなページをロード、コンテンツとしてスクリプト/ noscriptペアのみを使用します。

  2. 本文には、onLoad関数を実行するスクリプト(スクリプトa)があります。この関数は、第2のスクリプト(スクリプトb)を動的に含み、使用可能になったときに関数を実行します。

  3. 2番目のスクリプトは、さまざまな作業を行う.jsファイルです。

両方のスクリプトは、PHPによって解析され、application/x-javascriptコンテンツタイプを使用します。

これで、JSの問題のカップルを除いて、このすべてがうまくいきました。 JavaScriptは私の強力な言語の1つではないので、私はこれらが単純な問題であり、誰かが私に正しい方向を向けることを望んでいます。

問題1:私は単純な警告(「あなたはスクリプトbです」)を行うと、 2番目のスクリプトでは、期待どおりに動作します。しかし、私が他の何かをすれば、それはうまく動作し、ブラウザはそれが永久にロードされていることを示し続ける。これは、Firefoxでの色のトゥイーン、またはIEでの回転のものです。

私はさまざまな方法でスクリプトを終了しようとしましたが、何も役立たないようです。どのようにスクリプトがすべての方法でロードされていることをブラウザに指示する任意のアイデア?それは、PHPを介して解析されなければならない.jsファイルです。

問題2: 2番目のスクリプトは、OperaまたはGoogle Chromeのいずれにも含まれていないようです。読み込みの問題以外のFF/IEで正常に動作します。誰かが2番目のスクリプトの読み込みで互換性のない何かを使用している場合は誰も見ることができますか?

ありがとうございます!

更新:答えを

感謝。私は実際に火薬瓶を持っています。それが、すべてが正しく動作していることを知っている理由です(FFで、少なくとも)。スクリプトがOpera/Chromeで動作していないことは実際にはわかりませんが、何も起こりません。

これはかなりのコードです= o)私はファイヤーバグの実際の応答をコピーして投稿しますので、コードが正確にわかります。 Webサーバーが接続を閉じる限り、私はそれも考えていましたが、スクリプトbを警告(「何でも」)にすると奇妙に思えます。それは警告し、読み込みを停止しますが、私はまったく同じことをすべて行いますが、スクリプトdocument.write( '何でも)を作成します。それは永遠にロードされます。 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(...。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"); 
} 

答えて

2

私はそれがスクリプトに関連するものではありませんが、Webサーバとの賭け。あなたの説明、特にそれは多くのブラウザに影響を及ぼし、それらのスクリプトの中にはスクリプトを実行しないものもあります。ウェブサーバが接続を終了していないと私は信じています。 WebサーバーがHTTP/1.1キープアライブ要求を適切に処理していない可能性があります。

FirefoxでFirebugを試してみてください。それをインストールし、あなたのページ用に有効にして、ページをリロードし、実際に接続を開いているものの「ネット」タブを確認します。

1

これは多くのコードを通過するためのものです。あなたは間違いなくそれを診断するのに役立つFirebugを取得する必要があります。 onloadイベントが発生した場合、最新バージョンでも表示されます。

ファイアバグでは、値をテストするためにconsole.log('somevar=',var);と書くだけでメッセージを出力することもできます。グローバルネームスペースを使用しているので、ページがロードされた後にコンソールを使用して値をテストすることもできます。

私の頭の上から外して、私は接続が正しくphpで閉じることを確認します。また

document.onload = Start();

は、Start()の結果をonloadに割り当てます。これは、後で定義されるStartではありません。

また、window.onloadはより互換性があり、標準です。

jsファイルの出力をoutputphpA.jsおよびoutputphpB.jsとして保存し、それらのソースを直接取得し、読み込み動作が異なるかどうかを確認することができます。それがPHPの問題であれば、それは診断に役立ちます。

関連する問題