• 页面注入JS
  • 注入JS:

    app.SetOnContextCreated(func(browser *cef.ICefBrowser, frame *cef.ICefFrame, context *cef.ICefV8Context) bool {
       var jsCode = `
          Object.defineProperty(navigator, "platform", {
             get: function () {
                 return "Android";
             }
          });`
       frame.ExecuteJavaScript(jsCode, "", 0)
       return false //必须返回false
    })



    添加V8扩展:

    //浏览器环境初始化-仅在浏览器窗口创建的时候执行一次
       app.SetOnWebKitInitialized(func() {
          var myparamValue string
    
          v8Handler := cef.V8HandlerRef.New()
    
          //劫持函数
          v8Handler.Execute(func(name string, object *cef.ICefV8Value, arguments *cef.TCefV8ValueArray, retVal *cef.ResultV8Value, exception *cef.ResultString) bool {
             fmt.Println("注入v8Handler.Execute", name)
             var result bool
             if name == "GetMyParam" {
                result = true
                retVal.SetResult(cef.V8ValueRef.NewString(myparamValue))
             } else if name == "SetMyParam" {
                if arguments.Size() > 0 {
                   newValue := arguments.Get(0)
                   fmt.Println("value is string:", newValue.IsString())
                   fmt.Println("value:", newValue.GetStringValue())
                   myparamValue = newValue.GetStringValue()
                   newValue.Free()
                }
                result = true
             }
             return result
          })
          //注册js
          var jsCode = `
    
             //获取元素中心点坐标
             function itemCenterPoint(idStr){    
                var element = document.getElementById(idStr);// 获取元素   
                var position = element.getBoundingClientRect(); // 获取元素的位置信息   
                // 获取元素的中心点坐标
                var centerX = Math.floor(position.left + position.width / 2 + window.scrollX); 
                var centerY = Math.floor(position.top + position.height / 2 + window.scrollY);
                return centerX+"|"+centerY; 
             }
    
             //获取元素左侧中心坐标
             function itemLeftPoint(idStr){    
                var element = document.getElementById(idStr);// 获取元素   
                var position = element.getBoundingClientRect(); // 获取元素的位置信息   
                // 获取元素的中心点坐标
                var centerX = Math.floor(position.left ); 
                var centerY = Math.floor(position.top + position.height / 2 + window.scrollY);
                return centerX+"|"+centerY; 
             }
             //判断滚动条是否在最底部
             function isScrollAtBottom() {
                const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; // 获取当前滚动条的垂直位置
                const windowHeight = window.innerHeight; // 浏览器视口的高度
                const documentHeight = document.documentElement.scrollHeight; // 文档的总高度
                 // 当滚动条的垂直位置加上窗口高度大于等于文档高度时,滚动条在底部
                if(scrollTop + windowHeight >= documentHeight){
                   return "ok";
                }else{
                   return "no";
                }
                 
             }  
    
             function send2go(url,htmlStr){
                ipc.emit("send2go",[url,htmlStr]);
             }   
    
     
    
    `
          // 注册JS 和v8处理器
          cef.RegisterExtension("v8/test", jsCode, v8Handler)
    
       })