PHP / JavaScript.

2 Cevap php

Ben aşağıdakileri yapar bir sayfa var:

  1. Tarayıcı içerik olarak sadece bir script / noscript çifti ile, geçerli bir baş ve gövdesi ile çok basit bir sayfa yükler.

  2. Vücutta, bir işlev onLoad çalışan bir komut dosyası (script) vardır. Bu fonksiyonu dinamik bir ikinci komut (script b) içerir, ve kullanılabilir hale bunun bir işlevi çalışır.

  3. İkinci komut çeşitli çalışmalar yapan bir. Js dosyasıdır.

Her iki komut PHP tarafından ayrıştırılır ve application / x-javascript içerik türünü kullanırlar.

Şimdi, bu tüm JS hıçkırık bir çift dışında, sadece iyi çalışma var. JavaScript benim güçlü dillerden biri değil, bu yüzden bu basit konular ve birisi bana doğru yönde işaret edebilir umuyorum.

Problem 1: Ben basit bir alert ('komut dosyası b vardır') yaparsanız; beklendiği gibi ikinci komut, o çalışır. Ben başka bir şey yapmak, ancak iyi çalışıyor, ve sonra tarayıcı sonsuza dek yüklenmekte olduğunu belirten tutar. Bu IE'de firefox renk aranın veya eğirme şeydir.

Ben farklı şekillerde senaryoyu biten denedim ve hiçbir şey yardımcı olacak gibi görünüyor. Nasıl script tüm yol yüklenen tarayıcı belirtmek için herhangi bir fikir? PHP ayrıştırmak zorunda olan bir. Js dosya.

Problem 2: İkinci komut dosyası Opera veya Google Chrome birinde hiç dahil olmak görünmüyor. Yükleme sorunu dışında FF / IE, çalışıyor. Im ikinci script yükleme uyumlu olmayan bir şey kullanarak ise herkes görebilir miyim?

Teşekkürler!

Update:

Cevaplar için teşekkürler. Ben aslında her şeyi (en azından, FF) düzgün çalıştığını bildiğiniz neden olan, kundakçı var. Aslında komut Opera / Chrome'da çalışma olmadığını bilmiyorum, ama hiçbir şey olmuyor.

Ben firebug üzerinden gerçek yanıtları kopyalamak ve bu yayınlayacağız kod = o yeraldığını), yani kod tam olarak ne görebilirsiniz. Bildiğim kadarıyla bağlantıyı kapatmadan web sunucusu gibi, ben de düşünüyordum, ama o ben uyarı içine b komut yaparsanız ('ne olursa olsun') tuhaf görünüyor; o uyarmak ve daha sonra yükleme durdurmak, ama ben tam olarak aynı şeyi yapmak, ancak komut document.write ('ne yapacaktır); sonsuza kadar yük olacaktır.

İşte firebug net sekmesinden doğrudan kopyalanamaz güncellenen komut, şunlardır:

Bu discoverfire.net bir iç etki alanı, yani oradan bir şey yüklemek mümkün olmayacaktır Not ...

Initial HTML page:

<!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>

** Senaryo 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();
    }
}

Script 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 Cevap

Bu geçmesi için bir sürü kod olduğunu. Kesinlikle Kundakçı bunu teşhis yardım almalısınız. Onload olaylar ortaya çıkarsa zaman / son sürümü bile size gösterecektir.

Kundakçı Ayrıca sadece console.log('somevar=',var); kendi değerlerini test etmek yazarak çıkış mesajına size sağlayacaktır. Eğer global isim alanı kullanarak konum beri sayfa yüklendikten sonra bile test değeri için konsolunu kullanabilirsiniz.

Kafamın üst kapalı, ben bağlantısı düzgün php kapatır emin olur. Ayrıca

document.onload = Başlangıç ​​();

Binmeye Start () sonucu atamak, daha sonra tanımlanır başlatın değil.

Ayrıca window.onload daha uyumlu / standarttır.

Sen outputphpA.js ve outputphpB.js gibi js dosyaları çıkış kaydetmek isteyebilirsiniz, doğrudan bu kaynak ve yükleme davranışı farklılık olmadığını görmek. Yani bir php sorunu ise teşhis yardımcı olmalıdır.

Ben komut ile ilgili bir şey değildir, ancak Web sunucusu ile bahis. Sizin açıklama, özellikle birçok tarayıcılar etkiler, ve bazıları da komut dosyalarını çalıştırmak değil, web sunucusu bağlantıyı kapatmadan değil inanmak için bana yol açar. Belki web sunucusu düzgün HTTP/1.1 Keep-canlı istekleri işleyen değil.

Firefox'ta Firebug kullanmayı deneyin. Yükle, sayfanız için etkinleştirmek sayfayı yeniden ve gerçekten açık bağlantıyı tutuyor ne için "Net" sekmesini kontrol.