在 WP8 WebBrowser 控件中显示 m.bing.com

2023-12-07

我在 Windows Phone 8 上的 WebBrowser 控件中加载 bing.com 时遇到问题。这样做似乎会启动 WP8 搜索应用程序(与按手机上的搜索按钮相同)。问题是,一旦您单击该搜索应用程序中的结果,它不会带您返回原始应用程序 - 它会转到 IE 显示结果。这对我来说不起作用,并且似乎是网络浏览器行为中的一个巨大缺陷(IMO)。

似乎确实有一些应用程序已经成功地能够在不启动手机搜索应用程序的情况下显示 bing.com - 例如 Image Downloader Free。还有一个,不过我不记得是什么了……

经过一番研究,我发现访问 bing.com 时 WebBrowser_Navigating 事件会被触发 3 次:首先请求用户输入的 URL (www.bing.com),然后将其重定向到http://wp.m.bing.com/?mid=10006,然后它重定向到 bing://home/?mid=10006。

阻止它转发到 Bing 搜索应用程序非常简单,只需将其添加到 Navigating 事件中:

e.Cancel = (e.Uri.Scheme == "bing");

问题是,它只显示 Bing 搜索页面占位符,其中显示“Bing 搜索”,并有一个显示“返回 Bing 搜索”的链接,该链接不执行任何操作(通常会重新启动 Bing 搜索应用程序)。

我有一些想法,但我不确定它们的可行性如何。

  • 在WP8 WebBrowser控件中,是否可以伪造用户代理?
  • 是否可以删除或添加 WebBrowser.Uri.Flags 属性中的一项来影响 Bing.com 处理请求的方式?
  • 如果这些都不起作用,我可以简单地在我的网络服务器上创建一个虚拟页面,将所有 bing.com 请求重定向到它,并让它使用卡编码的用户代理抓取 m.bing.com 首页。不过,我真的很想避免这样做。从最终用户的角度来看,他们永远不会知道,但我只是添加了一个全新的开销、维护和资源层面。

如果您感兴趣,请附上 WebBrowser.Navigating 事件中发生的 3 个请求之间的 EventArgs 对象的差异:

Request 1 (bing.com) -> Request 2 (forwarded to wp.m.bing.com/?mid=10006) enter image description here

Request 2 (forwarded to wp.m.bing.com/?mid=10006) -> Request 3 (forwarded to bing://home/?mid=10006) enter image description here

tl;dr 有谁知道如何阻止 www.bing.com 导致搜索应用程序在我的应用程序的 WebBrowser 控件中启动?

谢谢你!


我不知道是否有更好的方法来处理这个问题,但我找到了解决方案。单击后退按钮时,我还没有让它完美工作,所以如果/当我找到更可靠的解决方案时,我将更新我的答案。我仍然认为这是WP8中WebBrowser控件的一个很大的缺陷。

这是代码:

private bool _customHeaderRequest = false;

private void MainBrowser_Navigating(object sender, NavigatingEventArgs e)
{
    string host = e.Uri.Host.ToLowerInvariant().Trim();

    if ((host == "bing.com" || host.EndsWith(".bing.com")) && !_customHeaderRequest)
    {
        e.Cancel = true;

        Dispatcher.BeginInvoke(() =>
            MainBrowser.Navigate(e.Uri, null,
                "User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 710)\r\n"));

        _customHeaderRequest = true;
        return;
    }

    _customHeaderRequest = false;
}

private void MainBrowser_Navigated(object sender, NavigationEventArgs e)
{
    _customHeaderRequest = false;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 WP8 WebBrowser 控件中显示 m.bing.com 的相关文章

  • 实现具有多项选择的项目列表

    在我的 WP8 应用程序中 我想实现一个与标准邮件应用程序中的功能非常相似的功能 用户能够从列表中选择多个项目 我提供了一些屏幕截图来说明此行为 Normal state User taps item s left corner and i
  • 在 ScrollViewer 中移动对象

    我正在为我的应用程序使用 MVVM 设置 并使用滚动查看器来滚动地图 在这张地图上 我有一个单位 当我选择它时我想移动它 但是 当我选择该单元时 我的 ScrollViewer 仍然处于激活状态 有没有办法解决滚动查看器或停用它 以便我可以
  • Windows Phone 8 HttpClient Get 方法返回奇怪的结果

    我正在开发一个 Windows Phone 8 应用程序 它将一些数据发送到服务器 服务器执行该数据并返回结果 可以随时查询服务器以获取当前执行的状态 可以是正在初始化 正在运行或已完成 仅当执行处于完成状态时输出才可用 用户可以选择通过按
  • 在 Windows Phone 8 中设置广告

    我发现了一些对类似问题的零散回复 主要是 Windows Phone 7 但我想发布一个包含 Windows Phone 8 广告的所有要求的答案 我在 Windows Phone 8 中设置广告时遇到了一些问题 每次运行模拟器时 我都会遇
  • 更改 Windows Phone 8.1 的 Xamarin Forms 中 Picker 控件的默认文本颜色

    我正在使用 Xamarin Forms 选择器控件并需要设置文本颜色 但是没有这样的属性 我尝试制作一个自定义渲染器 它在 android 和 ios 中对我有用 我最终重新绘制了控件 在wp8 1平台中没有Draw事件并且渲染器中的控件本
  • 如何删除 TextBlock 周围的多余空间

    我为我的 TextBlock 设置了以下内容
  • WP8 上的 IE 10 忽略媒体查询?

    我正在开发一个使用媒体查询的网站 我可以在桌面浏览器中看到它们正常工作 但是当我在 WP8 设备上导航到该网站时 没有加载 CSS 我创建了一个非常简单的 HTML 页面来复制问题并显示我尝试过但无法正常工作的解决方案 这是完整的代码
  • 绑定到多个索引器

    我正在尝试将索引属性与两个索引器绑定 该属性看起来像这样 public Item this int x int y get return items x y set items x y value 根据http msdn microsoft
  • 以编程方式更改应用栏图标

    在我的 C Windows Phone 8 应用程序中 我有一个 AppBar 我的这个 AppBar 上有两个图标 一个是新图标 一个是编辑图标 我想将编辑图标更改为每当按下时返回图标 然后每当再次按下时返回编辑图标 我已经尝试过这段代码
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • 在 WP8 设备上调试时 XAML 未更新

    我在部署到 Windows Phone 8 设备时遇到问题 当我进行构建和调试时 XAML 似乎没有更新 它似乎更新的唯一方法是当我执行 重建 gt 调试 或卸载应用程序然后进行调试时 这是一个场景 页面包含一个带有名为 Button Cl
  • Cortana 的帮助列表需要什么图标?

    因此 我在我的应用程序中添加了 Cortana 语音命令识别功能 我的 VCD 文件已全部设置完毕 一切都按预期运行 所以现在我必须寻找一些小东西 我的应用程序中拥有所有需要的图标 据我所知 但当我的应用程序出现在 Cortana 屏幕 我
  • 使用“isostore:/”方案从 XAML 中的独立存储访问图像

    我已经从网上下载了图像并将它们保存到独立存储中 现在我想在我的 XAML 文件中访问这些图像 并提供一个 Uri 作为对它们的引用 我已经使用 IsoStoreSpy 验证它们是否正确存储在我期望的位置 并且如果我打开文件并读取字节流 我可
  • 使用 POST 请求向 Jira API 发送 JSON 时出现 System.Net.WebException

    好吧 伙计们 我已经为这个问题苦苦挣扎了一天左右 但没有明确的解决方案 我将从例外开始 The remote server returned an error NotFound at System Net Browser AsyncHelp
  • 如何从 Native 组件向 C#/XAML 组件进行函数调用或触发事件?

    我正在开发一个带有本机 DirectX D3D 组件和 C XAML 组件的 WP8 应用程序 Native 组件绘制 UI 元素 C XAML 组件具有围绕它的应用程序 和其他事物 的控件 通常 我将信息从 C XAML 组件发送到本机组
  • WP7 应用程序栏图标未显示在模拟器上(但适用于 Blend)

    这很可能是一个愚蠢的错误 但是谁能告诉我为什么我的图标显示在 Blend 中 而不是显示在模拟器中 VS10 中也没有 但这并不是真正的问题 Edit 这是我的 XAML
  • Python:导航到便携式设备目录 (Windows 7)

    我正在尝试解决我创建的一个问题 https stackoverflow com questions 21381652 python find record time of mp4 movie noredirect 1 comment3234
  • 如何从 SQLite 的异步 PCL 版本使用 SQLiteAsyncConnection?

    我使用的是 Sqlite net 的 PCL 版本https github com oysteinkrog SQLite Net PCL https github com oysteinkrog SQLite Net PCL 但是 我无法获
  • 如何让我的 Windows Phone 7 应用程序出现在 Windows Phone 8 市场中?

    当我进行构建时 我一定做错了什么 我希望当前的更新适用于 Windows Phone 7 和 Windows Phone 8 我正在使用 WP8 SDK 并面向 OS 8 当我上传 XAP 时 我得到了 AnyCPU xap 现在我的应用程
  • Windows Phone HttpClient PostAsync 挂起且无响应

    我在拨打电话时遇到问题HttpClientWP 应用程序的 post 方法 PostAsync总是挂起并且不给出任何响应 当我从 WPF 应用程序中尝试时 相同的代码可以工作 这是我正在做的事情 服务器Web API代码 public cl

随机推荐

  • hapijs joi 验证,验证大于其他属性的总和

    我想验证一个字段 familymemberCount 它应该大于等于其他字段 我尝试了下面的代码 但这不允许将 运算符与 Ref 一起使用 我们如何用其他值的总和进行验证 export const familyMemberRulesSche
  • 使用 XCode 4 生成代码覆盖率数据需要什么

    我一直在尝试使用 XCode 4 2 1 构建 4D502 上概述的步骤为我的应用程序生成代码覆盖率数据http code google com p coverstory wiki UsingCoverstory 我显然错过了一些东西 因为
  • 为什么 OpenCL 工作组大小对 GPU 性能影响巨大?

    我正在 Qualcomm Adreno 630 GPU 上对一个简单的矩阵转置内核进行基准测试 我试图了解不同工作组大小的影响 但令人惊讶的是 我得到了一些我无法解释的有趣结果 这是我的内核代码 kernel void transpose
  • Xamarin:通过 GetManifestResourceStream 加载资源

    我正在开发一个使用 OpenGL OpenTK 的 Xamarin 表单项目 我正在尝试使用 GetManifestResourceStream 加载着色器 无论我做什么 我都会得到空值 代码正在从 Shared 项目运行 着色器位于 io
  • 从 NetCoreApp2.1 调用 OData 服务时出现 System.NotSupportedException

    我已经设置了一个多目标 net4 5 2 netstandard2 类库 允许使用我们的企业 OData 服务之一 为了访问此 OData 服务 我们使用使用以下命令生成的代理类OData v4 客户端代码生成器 v7 5 0 不幸的是 当
  • 从 C# 中的文本文件读取

    我有以下程序 它将发送 输出 信息到文本文件 但现在我想从文本文件中读取 输入 任何建议将不胜感激 我已经注释掉了一些 我认为 我需要做的事情 但我不太确定如何继续 using System Windows Forms using Syst
  • 尝试访问字符指针数组时出现分段错误

    所以我创建了一个处理 char 指针数组的函数 通过使用 运算符 功能 int fetchargs char argv argv 0 0 A 将导致分段错误 我传递了一个字符指针数组 其初始化如下 char argv ARG NUM MAX
  • Android、wifi主动扫描

    我需要在我的 Android 应用程序上进行频繁的 wifi 扫描 我正在尝试基于 wifi RSSI 值构建本地室内定位系统 如果我调用 wifi startScan 我有 onReceive 每 6 秒回调一次 我想默认情况下它是被动扫
  • Struts 2 是否可以作为 OSGi 捆绑包提供?

    我有一个服务器应用程序 由多个 OSGi 包组成 其中一些是我的 一些是第三方的 其中一个捆绑包提供了使用 Struts 的 Web 前端 必要的 Struts 库位于 Web 前端包内 现在我想添加第二个包 它提供另一个 Web 前端 具
  • Session.Abandon() 和 Session.Clear() 有什么区别

    销毁会话和删除其值有什么区别 您能提供一个例子来证明这一点吗 我搜索了这个问题 但没有掌握完整的答案 一些答案是 Session Abandon 破坏会话 Session Clear 只是删除所有值 一位朋友告诉我这样的事 清除会话不会重置
  • 如何生成表示离散均匀分布总和的数字

    Step 1 假设我想生成取值为 1 或 1 的离散均匀随机数 换句话说 我想生成具有以下分布的数字 P X 1 0 5 P X 1 0 5 要生成包含 100 个这些数字的数组 我可以编写以下代码 n 100 DV 1 1 Discret
  • 在 Bash 中删除数组中每个元素的开头和结尾

    我有一个包含 3 个元素的 bash 数组 我需要从所有元素中删除前 X 个字符 并从所有元素中删除最后 Y 个字符 如何才能实现这一点 下面的例子 echo array random path file1 txt random path
  • 在 Pandas 中,如何使用具有相似索引的另一个数据帧中的值来修补缺失值的数据帧?

    From 填充 pandas 数据框中缺失的行值 我有以下数据框 想填写缺失的值 mukey hzdept r hzdepb r sandtotal r silttotal r 425897 0 61 425897 61 152 5 3 4
  • 如果名称和值对 js 中的值为空,则从数组中删除对象

    name mode value 1 name group value name from date value name to date value 2018 10 16 name action value ac filter transa
  • 如何在 underscore.js 模板中使用 if 语句?

    我正在使用 underscore js 模板函数并完成了如下模板
  • 从 Windows 窗体控件中按名称查找控件

    我有一个文本框名称列表 我想按名称查找控件 这怎么可能 Use Control ControlCollection Find TextBox tbx this Controls Find textBox1 true FirstOrDefau
  • 如何在 C 语言编译时打印 sizeof() 的结果?

    如何在 C 语言编译时打印 sizeof 的结果 现在我使用静态断言 基于其他网络资源自制 将 sizeof 结果与各种常量进行比较 虽然这有效 但它远非优雅或快速 我还可以创建变量 结构的实例并查看映射文件 但这也比直接调用 命令 运算符
  • 在奇数/偶数整数列表中查找奇偶校验异常值

    我正在尝试查找并返回奇数整数列表中的单个偶数整数或偶数整数列表中的唯一奇数整数 但是 我的代码可以工作 如果奇数整数列表的长度是偶数 它会返回列表中的第一个数字而不是偶数整数 任何帮助表示赞赏 代码如下 even 2 4 6 8 10 12
  • 多个CPU可以同时写入同一个RAM位置吗?

    机器字大小 或更小 的写入是否已序列化 只需一个本机操作码即可将寄存器内容复制到 RAM 将数据写入 RAM 是原子的 如果两个 CPU 尝试同时写入同一位置 内存控制器将决定写入的某种顺序 当一个 CPU 写入内存时 另一个 CPU 将根
  • 在 WP8 WebBrowser 控件中显示 m.bing.com

    我在 Windows Phone 8 上的 WebBrowser 控件中加载 bing com 时遇到问题 这样做似乎会启动 WP8 搜索应用程序 与按手机上的搜索按钮相同 问题是 一旦您单击该搜索应用程序中的结果 它不会带您返回原始应用程