UWP项目接入Google登录网页版,遇到一个问题:点击登录打开的网页不在当前的WebView中加载而是打开了浏览器。

​​​​如何解决呢?UWP WebView如何阻止自动打开浏览器 一文给出了答案。

不过参考资料是C#版的,而我们的项目使用的C++,因此需要调整下,CX版阻止WebView自动打开浏览器的代码如下:

void TKWinrtWeb::addLoginWeb(Platform::String^ text)
{auto panel = cocos2d::GLViewImpl::sharedOpenGLView()->getPanel();auto dispatcher = cocos2d::GLViewImpl::sharedOpenGLView()->getDispatcher();cocos2d::Size visibleSize = cocos2d::Director::getInstance()->getOpenGLView()->getFrameSize();if (dispatcher && panel){// run on main UI threaddispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([this, visibleSize, text, panel](){if (m_webView == nullptr){m_webView = ref new Windows::UI::Xaml::Controls::WebView();//m_webView->NavigateToString(text);m_webView->Navigate(ref new Uri(text));m_webView->NavigationStarting += ref new TypedEventHandler<WebView^, WebViewNavigationStartingEventArgs^>(this, &TKWinrtWeb::onStart);m_webView->NavigationCompleted += ref new TypedEventHandler<WebView^, WebViewNavigationCompletedEventArgs^>(this, &TKWinrtWeb::onCompleted);m_webView->LongRunningScriptDetected += ref new TypedEventHandler<WebView^, WebViewLongRunningScriptDetectedEventArgs^>(this, &TKWinrtWeb::onLongRunningScriptDetected);m_webView->UnsafeContentWarningDisplaying += ref new TypedEventHandler<WebView^, Object^>(this, &TKWinrtWeb::onUnsafeContentWarning);m_webView->NewWindowRequested += ref new TypedEventHandler<WebView^, WebViewNewWindowRequestedEventArgs^>(this, &TKWinrtWeb::onNewWindowRequested);m_webView->ScriptNotify += ref new NotifyEventHandler(this, &TKWinrtWeb::onScriptNotify);m_webView->Width = visibleSize.width;m_webView->Height = visibleSize.height;panel->Children->Append(m_webView);int btn_w = 50;int btn_h = btn_w;Windows::UI::Xaml::Thickness ness = Windows::UI::Xaml::Thickness();ness.Left = visibleSize.width - btn_w*1.5;ness.Bottom = visibleSize.height - btn_h*1.5;m_backBtn = ref new Windows::UI::Xaml::Controls::Button();m_backBtn->Width = btn_w;m_backBtn->Height = btn_h;m_backBtn->Margin = ness;m_backBtn->Content = "X";m_backBtn->FontSize = 35;m_backBtn->Click += ref new RoutedEventHandler(this, &TKWinrtWeb::onBtnClicked);panel->Children->Append(m_backBtn);}}));}
}void TKWinrtWeb::onStart(WebView^ web, WebViewNavigationStartingEventArgs^ e)
{}void TKWinrtWeb::onCompleted(WebView^, WebViewNavigationCompletedEventArgs^ e)
{}void TKWinrtWeb::onLongRunningScriptDetected(WebView^, WebViewLongRunningScriptDetectedEventArgs^ e)
{}void TKWinrtWeb::onUnsafeContentWarning(WebView^, Platform::Object^ e)
{}//阻止打开浏览器的核心代码
using namespace Windows::Web::Http;
void TKWinrtWeb::onNewWindowRequested(WebView^ web, WebViewNewWindowRequestedEventArgs^ args)
{args->Handled = true;HttpMethod ^method = ref new HttpMethod("GET");HttpRequestMessage^ req = ref new HttpRequestMessage(method, args->Uri);web->NavigateWithHttpRequestMessage(req);auto panel = cocos2d::GLViewImpl::sharedOpenGLView()->getPanel();auto dispatcher = cocos2d::GLViewImpl::sharedOpenGLView()->getDispatcher();cocos2d::Size visibleSize = cocos2d::Director::getInstance()->getOpenGLView()->getFrameSize();if (dispatcher && panel){// run on main UI threaddispatcher->RunAsync(Windows::UI::Core::CoreDispatcherPriority::Normal, ref new Windows::UI::Core::DispatchedHandler([this, visibleSize, web,args, panel](){}));}
}//JS交互
void TKWinrtWeb::onScriptNotify(Object^ sender, NotifyEventArgs^ e)
{if (e){Platform::String ^content = e->Value;TKSdkUwp::getInstance()->tellLogin(PlatformStrToStdStr(content));removeWeb();}
}

参考资料:

https://jingyan.baidu.com/article/90808022043919fd91c80fba.html

UWP 如何阻止WebView自动打开浏览器?相关推荐

  1. 在anaconda中运行jupyter notebook,无法自动打开浏览器的解决方案,亲测100%有效

    运行jupyter notebook,无法自动打开浏览器的解决方案 第一步 找到 Jupyter_notebook_config.py文件,无论你anaconda装在哪个盘,这个文件一般都在C盘,我的 ...

  2. 用Python在Tomcat成功启动后自动打开浏览器访问Web应用

    前提条件 Windows Python 2.7 需设置CATALINA_HOME环境变量 放码过来 # -*- coding: utf-8 -* import os import time impor ...

  3. node 创建静态服务器并自动打开浏览器

    node 作为一门偏向后端的技术,提供了可以让我们js 在服务器上运行的平台,为我们前端工程师实现项目前端工程化,带来了众多便利.同时,它也可以很方便的创建静态服务器,可以直接连接数据库...实现多种 ...

  4. SpringBoot启动完之后自动打开浏览器网址

    SpringBoot启动完之后自动打开浏览器网址 @SpringBootApplication public class SpringBootApplication {public static vo ...

  5. python中用selenium进行自动打开浏览器打开指定网页并关闭-带图详解

    一.在电脑上装selenium模块的内容 1.电脑上win+r键打开运行程序,然后输入cmd,打开cmd命令窗口 2.输入:pip install selenium 3.输入完后直接敲回车后会自动安装 ...

  6. python生成表格并显示在浏览器_python自动打开浏览器下载zip并提取内容写入excel...

    前言 佬们轻喷,里面有些代码都是现学现写的,一些细节没处理好的地方还请指出来~~~ 首先贴上效果图:有些部分我没有放进来,比如浏览器的启动,但我详细聪明的你们那个玩意肯定一学就会.有些东西我没放进来 ...

  7. Vue项目启动后自动打开浏览器

    vue-cli 覆盖webpack配置 vue项目每次启动时都需要复制链接地址打开浏览器,影响到开发效率,下面一行代码配置,解决问题,自动打开浏览器! 项目根目录下新 vue.config.js(和s ...

  8. vue-cli 运行vue项目,设置 “ vue-cli-service serve --open ” 自动打开浏览器,无法启动的解决办法

    一,在 package.json 里面设置自动打开浏览器: "scripts": {"serve": "vue-cli-service serve - ...

  9. spring boot自动打开浏览器和配置打开首页

    目录 前言 一.配置自动打开浏览器 在启动器同级目录下创建config文件夹来放启动配置类 下面是application.properties的配置 二.配置默认首页 总结 前言 如何配置自动打开浏览 ...

  10. vue项目运行自动打开浏览器,默认设置为google浏览器的方法

    vue项目运行自动打开浏览器,默认设置为google浏览器. 设置方法就是把google浏览器设置为电脑默认浏览器,具体如下:

最新文章

  1. 英特尔nuc能代替主机吗_制砂机生产的沙子可靠吗?能代替天然沙子吗?
  2. 嵌入式成长轨迹53 【Zigbee项目】【CC2430基础实验】【串口时钟PC显示】
  3. linux ap程序,ubuntu(linux)无线网卡开启/关闭wifi(AP)
  4. ubuntu dpkg mysql_ubuntu-12.04 – 在Ubuntu 12.04上无法启动MySQL5.5 – “dpkg:依赖问题”...
  5. 安全看得见,阿里云性能监控 ARMS 全真3D拓扑实现一“屏”了然
  6. JSON字符串和实体类的相互转化
  7. ecshop添加商品选择品牌时如何按拼音排序
  8. python︱写markdown一样写网页,代码快速生成web工具:streamlit 数据探索案例(六)
  9. AI加持,计算机要拥有嗅觉了;GPU终于可用于Google Compute Engine | AI开发者头条
  10. LinGo基本用法总结
  11. 变维分形预测matlab,【求助】请大家帮我该该求一维曲线分形维数的matlba程序好吗!!...
  12. 主机服务器信息控制台,服务器的监控控制台
  13. JS十六进制转浮点、字符串转为ArrayBuffer、ArrayBuffer转16进制字符串、16进制转10进制、crc校验位、十六进制转中文字符串(小程序、浏览器)、十六进制字符串转ascall字串
  14. Appium基础 — uiautomatorviewer定位工具
  15. 什么是Saas架构?
  16. 电脑怎么查看处理器CPU型号、属性以及显卡型号
  17. Linux下使用aMsn详解(转)
  18. nltk学习之统计词频和分词nltk.word_tokenize nltk.FreqDist
  19. Nginx添加腾讯安全HTTPS证书
  20. 基于C语言实现http下载器

热门文章

  1. 将CS5463存放的数据转换成float类型
  2. 单行文本溢出隐藏显示省略号
  3. spring 实现小程序抖音去水印后台
  4. 用户自定义标识符php,三分钟了解C语言中自定义的标识符及规则
  5. Oracle如何创建数据库
  6. VOIP Codec 三剑客之 ISAC/ILBC -- ISAC (6) Spectrum Encode 模块
  7. 块/文件/对象三种存储的优缺点
  8. 加密WebSphere Application Server系统密码
  9. 学生环境保护绿色家园 WEB静态网页作业模板 大学生环境保护网页代码 dreamweaver网页设计作业制作 dw个人网页作业成品
  10. 2021-2027全球与中国自动识别和数据采集设备市场现状及未来发展趋势