diff --git a/cef/cef-v8-bind-render.go b/cef/cef-v8-bind-render.go index c41df5787ae27d1f6eb4c9efde99455f44c8167f..7e2d88aeee9984fbc00e55abdf6a023eccba9903 100644 --- a/cef/cef-v8-bind-render.go +++ b/cef/cef-v8-bind-render.go @@ -12,8 +12,10 @@ package cef import ( + "bytes" "fmt" "github.com/energye/energy/pkgs/json" + "text/template" ) var bindRender *bindRenderProcess @@ -48,22 +50,64 @@ func (m *bindRenderProcess) makeBind() { }) //注册js var jsCode = ` - let bind; - if (!bind) { - bind = {}; - } - (function () { - Object.defineProperty(bind, 'myparam', { - get(){ - native function GetMyParam(); - return GetMyParam(); - }, - set(v){ - native function SetMyParam(); - SetMyParam(v); - } - }); - })(); +let bind; +if (!bind) { + bind = {}; +} +(function () { + Object.defineProperty(bind, 'myparam', { + get(){ + native function getMyParam(); + return getMyParam(); + }, + set(v){ + native function setMyParam(); + setMyParam(v); + } + }); +})(); ` - registerExtension(internalBind, jsCode, m.handler) + var buf = &bytes.Buffer{} + buf.WriteString(fmt.Sprintf(`let %s=null;if(%s===null){%s={};}`, internalBind, internalBind, internalBind)) + buf.WriteString(`(function(){`) + buf.WriteString(`})();`) + fmt.Println(buf.String()) + var tempText = ` + {{range $i, $v := $.fields}} + Object.defineProperty({{$.bind}}, "{{$v}}", { + get(){ + native function getMyParam(); + {{getter ($v) }} + return getMyParam(); + }, + set(v){ + native function setMyParam(); + setMyParam(v); + } + }); + {{end}} + ` + var funcs = make(template.FuncMap) + funcs["getter"] = func(v string) string { + fmt.Println("getter", v) + return v + } + funcs["setter"] = func(v string) string { + return "" + } + temp, err := template.New("v8bind").Funcs(funcs).Parse(tempText) + if err != nil { + panic(err) + } + var data = map[string]any{} + data["bind"] = internalBind + var field = []string{"myparam", "myparam1"} + data["fields"] = field + var tempResult = &bytes.Buffer{} + err = temp.Execute(tempResult, data) + if err != nil { + panic(err) + } + fmt.Println("tempResult:", tempResult.String()) + registerExtension(fmt.Sprintf("%s/%s", internalV8Bind, internalBind), jsCode, m.handler) } diff --git a/cef/cef-v8-bind.go b/cef/cef-v8-bind.go index 27e4a6e05f29032199609ce4f321727bdb2c9cb6..6007e326b81e1ac93eda81a0b6be6832d6ea37a2 100644 --- a/cef/cef-v8-bind.go +++ b/cef/cef-v8-bind.go @@ -14,11 +14,13 @@ package cef import "github.com/energye/energy/common" const ( - internalBind = "v8/bind" + internalBind = "bind" + internalV8Bind = "v8" ) +// isInternalBind 内部使用字段不能使用 func isInternalBind(name string) bool { - return name == internalBind + return name == internalBind || name == internalV8Bind } // bindInit 初始化 diff --git a/example/dev-test/ipc-event/resources/ipc-event.html b/example/dev-test/ipc-event/resources/ipc-event.html index 687cf8a49f2cb90722b413482300f72b6391eb77..91f941fb8edf524cfcc2bad2bfb3b0bd91dd052f 100644 --- a/example/dev-test/ipc-event/resources/ipc-event.html +++ b/example/dev-test/ipc-event/resources/ipc-event.html @@ -315,8 +315,6 @@ msg("testEmitSync-callback", result); }) } - -