Share via


如何链接到外部网页 (HTML)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

了解如何链接至外部网页并在应用中显示这些网页。

先决条件

说明

链接至外部网页

要链接到外部网页,只需在你的 HTML 中添加一个超链接。 这个示例创建了一个指向 www.bing.com 的链接。当单击该链接时,它会在 Web 浏览器(而不是在你的应用)中打开。


<p><a href="https://www.bing.com">Search the web</a></p>

在应用中显示外部网页

你的应用可以在 iframe 中显示外部页面,但不能将你的顶层页面导航到外部网页。

Hh780594.wedge(zh-cn,WIN.10).gif要在你的应用中显示外部网页

  1. 创建 iframe 以显示网页。设置 iframe 元素的 name 属性。

    
    <iframe name="targetFrame">
    </iframe>
    
  2. 创建到外部网站的链接。将其 target 属性设置为你在上一步中创建的 iframe 的名称。

    
    <p><a href="https://www.bing.com" target="targetFrame" >Search the web</a></p>
    
    <iframe name="targetFrame">
    </iframe>
    

    当你运行应用并单击该链接时,将在你的应用程序中打开该链接。 页面将在 Web 上下文中运行,并且与包含在应用包中的页面相比,对系统具有有限的访问权限。

    如果要在 iframe 中显示一个外部网页,当网页存在错误时一个好方法是提供自定义错误页面。有关如何执行此操作的示例,请参阅 XHR(处理导航错误)和 URL 架构示例

    注意  出于性能方面的原因,Windows 应用商店应用可能会无限期地缓存远程内容。因此,你的应用可能无法显示最新的脚本或 CSS 更新。卸载并重新安装应用会清除缓存。其他解决方案包括:在查询字符串中包含一个随机参数或者将 Web 服务器设置为不进行缓存。有关详细信息,请参阅如何防止在 Internet Explorer 中进行缓存

     

关于本地和 Web 上下文

包含在应用本身中的页面通常在应用的本地上下文中运行。使用 iframe 导航到远程页面时,该页面在 Web 上下文中运行并且对系统具有有限的访问权限。

本地上下文页面和脚本与 Web 上下文页面和脚本相比,可以使用不同的功能。例如,它们可以访问 Windows 运行时和执行跨域 XHR 请求。本地和 Web 上下文页面都能访问适用于 JavaScript 的 Windows 库。

有关本地和 Web 上下文页面可用的不同功能的详细信息,请参阅按照上下文分类的功能和限制

可以使用应用包清单的 ApplicationContentUriRules 部分在 Web 上下文中提供一个页面,用于访问系统的地理位置设备(如果应用有访问此功能的权限),以及访问剪贴板。

Hh780594.wedge(zh-cn,WIN.10).gif为 Web 上下文页面提供其他访问权限

  1. 要为 Web 上下文中的页面提供其他访问权限,请创建“内容 Uri”规则。在 Microsoft Visual Studio 解决方案资源管理器中,右键单击你的应用的 package.appxmanifest 文件,并选择“查看设计器”。 将会显示清单设计器。

  2. 在“URI”****列中,指定要包括的网页的 URI。

    可通过多种方式来指定 URI 匹配:

    • 可以指定确切的主机名
    • 可以指定主机名,为其包括或排除含有该主机名的任何子域的 URI
    • 可以指定确切的 URL
    • 可以指定包含查询属性的确切 URI
    • 你可以指定部分路径,并使用通配符指示包含规则的特定文件扩展名。
    • 你可以针对排除规则使用相对路径,但不针对包含规则使用相对路径。

    在此示例中,将 URI 设置为 https://www.bing.com/*

    注意  如果你有多个子域,则必须针对每个子域使用一个通配符。 例如,“https://*.microsoft.com”与“https://"any".microsoft.com”匹配,但不与“https://"this"."any".microsoft.com”匹配。

     

  3. “规则”下拉列表允许你指定是应包含还是排除该 URI。将它设置为“包括”****。

  4. 单击“添加新 URI”以添加该规则。设计器在后台将一个新的 Rule 元素添加到你的程序包清单文件的 ApplicationContentUriRules 部分中。

          <ApplicationContentUriRules>
            <Rule Match="https://www.bing.com/*" Type="include" />
          </ApplicationContentUriRules>
    

从 Web 导航到本地上下文页面

除非你从本地上下文页面中调用 MSApp.addPublicLocalApplicationUri,并将其传递到你希望 Web 上下文页面能够导航到的页面的 URI,否则你将无法从 Web 上下文页面导航到本地上下文页面。例如,如果你想使一个 Web 上下文页面能够导航到你的应用中名为“page2.html”的页面,则使用以下代码:

MSApp.addPublicLocalApplicationUri("page2.html");

Web 上下文页面现在可以导航到 page2.html。你必须为每一个你希望从 Web 上下文页面导航到的本地上下文页面都调用此方法一次。

警告   如果你有一个接受查询参数的页面,并且允许从 Web 上的任何位置导航到它,则外部的网页可能会传递恶意的查询参数。

 

相关主题

按照上下文分类的功能和限制