2017-07-06 2 views
0

Ich versuche, das gleiche einer diese Antwort in Scala.JS zu tun: https://stackoverflow.com/a/21067431Sticky Rolle in Scala.JS

Nach seiner exemple: http://jsfiddle.net/dotnetCarpenter/KpM5j/
Ich habe versucht, hier zu wiederholen: https://scalafiddle.io/sf/gKgxQY0/3277

import scalatags.JsDom.all._ 
import scala.concurrent.duration._ 
import org.scalajs.dom 

println(div(id := "logs", style := "height: 100px")) 

js.timers.setInterval(1.millisecond) { 
    val logs = dom.document.getElementById("logs") 

    val isScrolledToBottom = logs.scrollHeight - logs.clientHeight <= logs.scrollTop + 1 

    val child = dom.document.createElement("div") 
    child.innerHTML = s"isScrolledToBottom: $isScrolledToBottom" 
    logs.appendChild(child) 

    if (isScrolledToBottom) logs.scrollTop = logs.scrollHeight - logs.clientHeight 

    val child2 = dom.document.createElement("div") 
    child2.innerHTML = s"logs.scrollTop: ${logs.scrollTop}" 
    logs.appendChild(child2) 
} 

Kann jemand sehen, warum die Scala.JS Version nicht funktioniert?

Prost

Antwort

0

Ok, das, weil ich die overflow:auto auf dem div hinzufügen nicht war: https://scalafiddle.io/sf/gKgxQY0/3294

import scalatags.JsDom.all._ 
import scala.concurrent.duration._ 
import org.scalajs.dom 

println(div(id := "logs", style := "overflow:auto; height: 100px")) 

js.timers.setInterval(1.second) { 
    val logs = dom.document.getElementById("logs") 

    val isScrolledToBottom = 
    logs.scrollHeight - logs.clientHeight <= logs.scrollTop + 1 

    val child = dom.document.createElement("div") 
    child.innerHTML = s"isScrolledToBottom: $isScrolledToBottom" 
    logs.appendChild(child) 

    if (isScrolledToBottom) 
    logs.scrollTop = logs.scrollHeight - logs.clientHeight 
}