[Javascript] ท่านใดเก่ง javascript รบกวนหน่อย

เริ่มโดย iPokz, 10 พฤษภาคม 2010, 01:34:41

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

iPokz

ใครพอสามารถที่จะช่วยทำให้

Scroll bar ของเนื้อหาใน Div ที่กำหนดอยู่ตรงตำแหน่งดังนี้ได้

* เริ่มโหลดหน้ามาให้ตำแหน่ง Scroll bar อยู่ด้านล่างสุดของ DIV ที่กำหนด
* ถ้ามีการเปลี่ยนแปลงเนื้อหาใน DIV ให้ตรวจสอบว่า Scroll bar อยู่ที่ตำแหน่งใด
** ถ้าอยู่ที่ตำแหน่งล่างสุดก่อนมีการเปลี่ยนแปลงเนื้อหาก็ให้ Scroll bar อยู่ที่ตำแหน่งล่างสุด
** ถ้าอยู่ที่ตำแหน่งใดๆ ก่อนมีการเปลี่ยนแปลงเนื้อหาก็ให้ Scroll bar อยู่ที่ตำแหน่งนั้นๆ

พอดีผมจะเอามาประยุกต์ใช้งานกับ Chatroom น่ะครับ ไม่รู้ว่า ผมอธิบายไป งงกันตรงไหนป่าว ^^"

ถ้าได้โค้ดที่ใช้งานกับ jQuery ได้ด้วยจะดีมากเลยครับ



ขอบคุณล่วงหน้าครับ

Pok
█ รับติดตั้งปรับแต่ง VPS/Server ค่าบริการเริ่มต้นครั้งละ 500 บาท
█ รับวางเครื่อง Colocation พร้อมปรับแต่งการใช้งานราคามิตรภาพ
█ [direct=http://www.suksonhost.com/seo-hosting]SEO Hosting 25IPs[/direct] ราคาเริ่มต้น 250 บาทเลือกไอพีใช้งานได้เอง
█ Contact : 084-0613164 (Pok)
= = =
█ เป้าหมาย : ขอกำไรแค่เดือนละหมื่นให้แม่พ่อไม่ต้องทำงาน

iPokz

█ รับติดตั้งปรับแต่ง VPS/Server ค่าบริการเริ่มต้นครั้งละ 500 บาท
█ รับวางเครื่อง Colocation พร้อมปรับแต่งการใช้งานราคามิตรภาพ
█ [direct=http://www.suksonhost.com/seo-hosting]SEO Hosting 25IPs[/direct] ราคาเริ่มต้น 250 บาทเลือกไอพีใช้งานได้เอง
█ Contact : 084-0613164 (Pok)
= = =
█ เป้าหมาย : ขอกำไรแค่เดือนละหมื่นให้แม่พ่อไม่ต้องทำงาน


kitazawa1st

เดาว่า ปัญหาหลักอยู่ที่ ไม่รู้ว่าตำแหน่งที่เปลี่ยนแปลงอยู่ตรงไหน ใช่ป่าวหว่า  :P

เดาเฉยๆ ไม่รู้วิธีแก้ ติดปัญหาตรงนี้แหละ
เล็กสั้น ขยันซอย

medzmay

function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return scrOfY;
}

ผมเคยทำ แบบหาว่า scroll ของหน้าต่างอยู่ใหน div ไม่เคยลองเปลี่ยน script ข้างบนจาก object ของ window เป็น object ของ div ดูนะครับ ยังไม่ได้ลองเหมือนกัน
[direct=https://propertytrend.co]รีวิวคอนโด[/direct]
[direct=https://roadnroll.co]รีวิวรถยนต์ มอเตอร์ไซค์[/direct]
[direct=https://www.ennxo.com]ขายของมือสอง[/direct]
[direct=https://www.ennxo.com/computer/laptop]โน๊ตบุ๊คมือสอง[/direct]
[direct=https://propertytrend.co/article/the-issara-sathorn]รีวิว ดิ อิสสระ สาทร[/direct]

ball6847

ก็คือให้มันเลื่อนลงมาข้อความล่างสุดใช่มั้ยครับ


$("#selector").scrollTop($("#selector")[0].scrollHeight);


jquery ใช้แค่นี้เอง
We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

iPokz

อ้างถึงจาก: ball6847 ใน 12 พฤษภาคม 2010, 18:12:20
ก็คือให้มันเลื่อนลงมาข้อความล่างสุดใช่มั้ยครับ


$("#selector").scrollTop($("#selector")[0].scrollHeight);


jquery ใช้แค่นี้เอง

อ่ะคับ คือบางที มันมีปัญหาตรงที่ ผู้ใช้งาน จะ เลื่อนไปดูข้อความด้านบน น่ะคับ

ถ้าใช้แบบให้มันอยู่ล่างสุดตลอด เวลาเปลี่ยนแปลงข้อมูล ผู้ใช้ยังอ่านข้อความไม่หมด

มันจะเลื่อนมาตำแหน่งล่างสุดน่ะครับ ...
█ รับติดตั้งปรับแต่ง VPS/Server ค่าบริการเริ่มต้นครั้งละ 500 บาท
█ รับวางเครื่อง Colocation พร้อมปรับแต่งการใช้งานราคามิตรภาพ
█ [direct=http://www.suksonhost.com/seo-hosting]SEO Hosting 25IPs[/direct] ราคาเริ่มต้น 250 บาทเลือกไอพีใช้งานได้เอง
█ Contact : 084-0613164 (Pok)
= = =
█ เป้าหมาย : ขอกำไรแค่เดือนละหมื่นให้แม่พ่อไม่ต้องทำงาน

ball6847

อื้ม ยากแฮะ

งั้งก็ต้องตามที่ว่ามาแหละคับ เช็คตำแหน่งก่อน

ถ้าเช็คว่าอยู่ตำแหน่งล่างสุดๆหรือเปล่านี่ยังงัยหว่า

น่าจะเอา height + scrollTop เทียบกับ scrollHeight


เขียนเป็น plugin ก็น่าจะประมาณนี้

$.fn.isScrollBottom = function() {
   return (this[0].scrollTop + this.height()) == this[0].scrollHeight;
};

$.fn.scrollToBottom = function() {
   return this.each(function(){
      $(this).scrollTop(this.scrollHeight);
   });
};

คือมันต้องอยู่ชิดล่างสุดจริงๆนะครับมันถึงจะ return true

ประมาณว่า

//  onBeforeMessageUpdate
var needScrollToBottom = $('#message_container').isScrollBottom();


// onMessageUpdate
if (needScrollToBottom)
{
   $('#message_container').scrollToBottom();
}


We use Ubuntu.

[direct=http://ng-seo.sourcelab.xyz/]AngularJS SEO Experimental[/direct]

iPokz

ขอบคุณมากครับ ใช้งานได้แระครับ
█ รับติดตั้งปรับแต่ง VPS/Server ค่าบริการเริ่มต้นครั้งละ 500 บาท
█ รับวางเครื่อง Colocation พร้อมปรับแต่งการใช้งานราคามิตรภาพ
█ [direct=http://www.suksonhost.com/seo-hosting]SEO Hosting 25IPs[/direct] ราคาเริ่มต้น 250 บาทเลือกไอพีใช้งานได้เอง
█ Contact : 084-0613164 (Pok)
= = =
█ เป้าหมาย : ขอกำไรแค่เดือนละหมื่นให้แม่พ่อไม่ต้องทำงาน