Nasıl sayfa yüklenmeden SONRA JavaScript işlevi tetikleyecek mi?

8 Cevap php

** EDIT **

I'm afraid I wasn't in the right direction - the problem isn't what I asked about. the Javascript works as it should, it's the PHP that doesn't show what I want it to on the first "run" - and I'm stil not sure why. Sorry for somewhat wasting your time...

**

I have a form that might or might not already contain data in its fields. If a user reaches the form and he already has some data in the system, his ID number, for instance, will appear in the ID field - and a JavaScript function running onLoad will disable the input field and change its style:

<body onload="runFunction()">

the problem is that it seems to run before the PHP does its part, and only if I refresh the page, the JS function does everything I want it to (it disables and styles some other form fields that depend on a PHP condition).

Is there a way to have this JS function run AFTER the page was rendered? I tried running this before closing the page:

<body>
...
...
<script>
runFunction();
</script>
</body>
</html>

ama boşuna.

any ideas? Thanks!

İlgili PHP kod bazı: [I kaldırıldı id okuma kolaylaştırmak için bağlıyor]

<?php if ($h_phone != '' && $h_phone_pre != '') {  
echo "<td class=\"input\"><input type=\"text\" id=\"new_user_home_tel\" value=\"$h_phone\" size=\"8\" maxlength=\"7\" disabled=\"disabled\" /> -  
<select id=\"new_user_home_tel_pre\" disabled=\"disabled\">  
  <option value=\"$h_phone_pre\" selected=\"selected\"></option>";

     } else {

echo '<td class="input"><input type="text" id="new_user_home_tel" size="8" maxlength="7" /> -  
 <select id="new_user_home_tel_pre">  
   <option value=" " selected="selected"></option>';
    }?>  <option value="02">02</option>
     <option value="03">03</option>
     <option value="04">04</option>
     <option value="08">08</option>
     <option value="09">09</option>
</select> 
</td>

the Javascript code just changes the style if the field isn't empty and that works, but the PHP works only after a refresh.

8 Cevap

Ben doğru yönde değil korkuyorum - Sorun hakkında sorular ne değildir. Javascript gerektiği gibi çalışır, ben ilk "kaçak" üzerine onu istediğinizi göstermek değil PHP - ve ben hala neden emin değilim. Biraz zaman harcıyorsun için özür dilerim ...

Sizin Javascript sayfa yüklendikten sonra, sorun başka bir yerde çalıştırmak yok.

Bu sunucu yenileme önce ve sonra farklı HTML gönderir olmalıdır. Ben sayfanın kaynağını kaydetmek eğer ilk defa almak ve yenileme sonrasında elde kaynağı ile karşılaştırın öneririz. Ben farkı nokta olacaktır ve bu yanlış ne olduğunu size söyleyecektir eminim.

JQuery yapar. Sayfası oluşturulur sonra aşağıdakilerden içinde her şey yerine getirecektir:

$(document).ready(function() {
  //Call your function here
});

"Ertele" niteliğini sahipsiniz.

Bir yolu çıkışı-tampon PHP sayfasını etmektir. Bu komut çalışan bitirir ve ardından bu seferde dışarı gönderilen kadar üretilen her şey belleğe gider gelir.

http://uk.php.net/ob_start bir göz atın

olmayan JS kütüphanesi cevap:

<script>
window.onload = function(){
 /* do stuff */
}
</script>

Ancak JQuery gibi bir JS kütüphanesi kullanarak tüm bu eleyip çapraz tarayıcı hata / sorunları ilgilenir.

Size gövdenin sonunda <script> blokları yerleştirmek için sağ. Bir <script> bloğu çarptığında bu tarayıcı bloklar gibi sayfa yükleme performansını geliştirir.

Kesinlikle hacky, ama her zaman aşağıdaki formu 2x2 saydam bir görüntü koymak ve onLoad bulunuyor kullanarak fonksiyonunu çalıştırabilir. Hiçbir hata dosyası dahil değildi durumda vardı bu yüzden ben bir şartlı dahil dosya üzerinde benzer bir şey yaptım.

Ben size bir çıkış değişkeni ve dosyanın sonunda onu echo daha içerik eklemek öneririm. Ex:

...
$output .= '<body onload="runFunction();">';
while(...)
{
   $output .= '...';
}
$output .= '</body>';
...
echo $output;