โหลดเมื่อจำเป็นต้องโหลด

รู้มั้ยครับ คุณสมบัติเด่นอีกอย่างนึงของ JavaScript คืออะไร “แดกแรม client” ใช่แล้วครับ มันชอบดูดแรมผู้ใช้งานไปเรื่อย โดนไม่คืนเสียด้วย แถมการ include JavaScript ที่เขียนเยอะๆ ไฟล์ใหญ่ๆ เข้าไปยังทำให้ page load ช้าอีก นอกเหนือจาก เทคนิค การ บีบอัดไฟล์ js แล้ว วันนี้ผมจะมาแนะนำ อีกเทคนิคนึงกัน นั่นคือ…

การใช้คำสั่ง $.getScript ซึ่งคำสั่งนี้ ใช้ทำอะไรบ้างมาดูกัน

1. สามารถ ใช้เรียก javascript ให้ทำงาน หลังจากทำ Event ต่างๆ เป็นการแก้ปัญหา event listener ไปในตัว
2. สามารถ ลดโหลด ในหน้าเวบได้ โดยจะเรียกใช้เมื่อจำเป็นเท่านั้น

ในวันนี้ผมจะมาแนะนำ ประโยชน์ในข้อที่ 2 กัน เพราะข้อที่ 1 พูดมาหลายทีแล้ว เรื่องแก้ปัญหา event ไม่รับฟังหลังจากมีการ append DOM ขึ้นมาใหม่เนี่ย

test.html

  1.  
  2. <html>
  3. <head>
  4. <title>jQueryTips.com</title>
  5. <script type="text/javascript" src="jquery.js"></script>
  6. <script language="JavaScript">
  7. <!–
  8. $(function() {
  9.  
  10.         $(‘.loadJs’).click(function() {
  11.                 $.getScript(’script.js’ , function() {
  12.                         // do something after script loaded
  13.                 });
  14.                 return false;
  15.         });
  16.  
  17. });
  18. //–>
  19. </script>
  20. </head>
  21. <body>
  22.  
  23. <a href="http://www.google.com" class="loadJs">Click to load JS</a>
  24. <div class="redit">Some Text</div>
  25.  
  26. </body>
  27. </html>
  28.  

script.js

  1.  
  2. $(function() {
  3.   $(‘.redit’).css(‘background’, ‘red’);
  4. });
  5.  

จากตัวอย่าง ไฟล์ script.js จะทำหน้าที่ เปลี่ยนสีของ bg โดยจะหา node ที่มี class = redit

ซึ่งการทำงานจะเริ่มตั้งแต่มีการกด .loadJs หลังจากที่ทำการกด จะไปเรียก script include ที่ชื่อว่า script.js โดยใช้คำสั่ง $.getScript

และ script.js จะทำงานต่อทันที เพื่อใช้งาน ณ ขณะนั้นเลย ไม่จำเป็นต้องโหลดมาไว้ทั้งหมดก่อน

เอาล่ะ วันนี้อัพเดท สั้นๆ พอหลังจากหายไปนาน ไว้จะเอา Tips เด็ดๆ มาฝาก jQueryTips Fans กันอีกนะครับ ^^

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

2 Comments »

 
  • DominixZ says:

    ขอบคุณครับ :D ไม่เสียดายที่ cheer jQuery มาตั้งแต่ตอนยังไม่ดัง ตอนนี้เมืองนอกเป็นชื่นชอบกันมากครับ :)

  • pop says:

    หวัดดีครับ ผมก็ใช้ jquery เป็นประจำ แต่มีปัญหานึง ว่าถ้าใช้อันนี้กับ
    google map มันไม่ทำงานอ่ะ พี่มีวิธีแก้ไหม เพราะผมต้องเขียนเป็น
    tag ถึงจะทำงาน แต่ก็ไม่อยากฝั่งไว้ที่ header ไว้ทุกหน้า

 

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>