JavaScript 演练中的错误处理

警告

自 2020 年 6 月 1 日起,适用于 Windows UWP 应用的 Microsoft 广告盈利平台将关闭。 了解详细信息

本演练介绍如何在 JavaScript 应用中捕获与广告相关的错误。 本演练使用 AdControl 显示横幅广告,但其中的普通概念也适用于间隙广告和本机广告。

这些示例假定你拥有一个 JavaScript 应用,它包含一个 AdControl。 有关演示如何向应用添加 AdControl 的分步说明,请参阅 HTML 5 和 JavaScript 中的 AdControl。 有关演示如何向 JavaScript/HTML 应用添加横幅广告的完整示例项目,请参阅 [GitHub 上的广告示例]https://github.com/microsoft/Windows-universal-samples/tree/b1cb20f191d3fd99ce89df50c5b7d1a6e2382c01/archived/Advertising).

  1. 在 default.html 文件中,在 div 中针对 AdControl 定义 data-win-options 的所在位置添加适用于 onErrorOccurred 事件的值。 在 default.html 文件中找到以下代码。
    <div id="myAd" style="position: absolute; top: 53px; left: 0px; width: 300px; height: 250px; z-index: 1"
      data-win-control="MicrosoftNSJS.Advertising.AdControl"
      data-win-options="{applicationId: '3f83fe91-d6be-434d-a0ae-7351c5a997f1', adUnitId: 'test'}">
    </div>
    
    adUnitId 属性之后,添加适用于 onErrorOccurred 事件的值。
    <div id="myAd" style="position: absolute; top: 53px; left: 0px; width: 300px; height: 250px; z-index: 1"
      data-win-control="MicrosoftNSJS.Advertising.AdControl"
      data-win-options="{applicationId: '3f83fe91-d6be-434d-a0ae-7351c5a997f1', adUnitId: 'test', onErrorOccurred: errorLogger}">
    
```
  1. 创建将显示文本的 div,以便你可以看到所生成的消息。 为此,在 div 后面添加用于 myAd 的以下代码。

    <div style="position:absolute; width:100%; height:130px; top:300px; left:0px">
        <b>Ad Events</b><br />
        <div id="adEvents" style="width:100%; height:110px; overflow:auto"></div>
    </div>
    
  2. 创建将触发错误事件的 AdControl。 对于应用中的所有 AdControl 对象,只可以有一个应用程序 ID。 因此创建具有不同应用程序 ID 的其他对象将在运行时触发错误。 为此,在先前添加的 div 部分的后面,将以下代码添加到 default.html 页面的正文中。

    <!-- Because only one applicationId can be used, the following ad control will fire an error event. -->
    <div id="liveAd" style="position: absolute; top:500px; left:0px; width:480px; height:80px"
      data-win-control="MicrosoftNSJS.Advertising.AdControl"
      data-win-options="{applicationId: '00000000-0000-0000-0000-000000000000', adUnitId: 'test', onErrorOccurred: errorLogger }" >
    </div>
    
  3. 在项目的 default.js 文件中,在默认的初始化函数的后面,需要添加用于 errorLogger 的事件处理程序。 滚动到文件末尾,在最后一个分号的后面就是你要添加以下代码的位置。

    WinJS.Utilities.markSupportedForProcessing(
    window.errorLogger = function (sender, evt) {
        adEvents.innerHTML = (new Date()).toLocaleTimeString() + ": " +
        sender.element.id + " error: " + evt.errorMessage + " error code: " +
        evt.errorCode + "<br>" + adEvents.innerHTML;
        console.log("errorhandler hit. \n");
    });
    
  4. 生成并运行该文件。 你将看到来自你先前生成的示例应用中的原始广告,以及该广告下描述错误的文本。 你将不会看到具有 liveAd 的 ID 的广告。