cefsharp重寫默認js彈窗(alert/confirm/prompt)


 1.設置js彈窗控制器

webView.JsDialogHandler = this;  //js彈窗控制

this表示本類對象,所以本類要實現IJsDialogHandler接口

 

2.實現IJsDialogHandler接口接口方法

   public bool OnJSAlert(IWebBrowser browser, string url, string message)
        {
            MessageBox.Show(message);
            return true; //阻止js彈
        }

        public unsafe bool OnJSConfirm(IWebBrowser browser, string url, string message, bool* retval)
        {
            DialogResult result = MessageBox.Show(message, "提示", MessageBoxButtons.YesNo);
            bool value = result == DialogResult.Yes ? true : false;
            //   retval = (bool *)GCHandle.Alloc(value).AddrOfPinnedObject().ToPointer(); //獲取托管內存地址,異常
            // retval = &value; //改變指針失敗
            *retval = value;
            return true;
        }

        public unsafe bool OnJSPrompt(IWebBrowser browser, string url, string message, string defaultValue, bool* retval, ref string result)
        {
            //交互消息
            string r = string.Empty;
            this.Invoke(new Action(() =>
            {
                r = Microsoft.VisualBasic.Interaction.InputBox(message, "提示", defaultValue);
            }));
            result = r;

            if (result == defaultValue)
            {
                *retval = false;
            }
            else
            {
                *retval = true;
            }
            return true;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM