-
Notifications
You must be signed in to change notification settings - Fork 0
/
body.go
54 lines (45 loc) · 1.2 KB
/
body.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package body
/*
Файл предоставляе ттип тела документа браузера
*/
import (
"syscall/js"
"github.com/prospero78/gox/internal/gox/size"
)
// TBody -- тело документа браузеа
type TBody struct {
size *size.TSize
body js.Value
}
var (
body *TBody
)
// GetBody -- возвращает (при необходимости создаёт новый) *TBody
func GetBody() *TBody {
if body != nil {
return body
}
body = &TBody{
size: size.New(),
body: js.Global().Get("document").Get("body"),
}
body.UpdateSize()
return body
}
// GetSize -- возвращае тфизические размеры тела документа
func (sf *TBody) GetSize() (w, h float64) {
sf.UpdateSize()
return sf.size.Get()
}
// SetSize -- устанавливает физические размеры тела документа
func (sf *TBody) SetSize(w, h float64) {
sf.body.Set("clientWidth", w)
sf.body.Set("clientHeight", h)
sf.size.Set(w, h)
}
// UpdateSize -- обновляет размер тела документа
func (sf *TBody) UpdateSize() {
w := sf.body.Get("clientWidth").Float()
h := sf.body.Get("clientHeight").Float()
sf.size.Set(w, h)
}