从Google Web Designer

时间:2016-06-03 20:33:02

标签: javascript html random google-web-designer

我已经使用Google Web Designer几个月了,我有一个问题。我不知道在GWD中是否可以做到这一点:

我希望index.html文件加载不同的随机页面,在3页之间选择。当你点击重新加载时,它应该加载另一个随机页面,依此类推。这些页面不需要按顺序显示。我试图找出如何做到这一点但到目前为止我没有成功。

1 个答案:

答案 0 :(得分:0)

这可以使用自定义JavaScript事件处理程序完成。

<gwd-doubleclick>元素会在显示任何内容之前触发adinitialized事件,我们可以使用该事件确保在用户看到第一页之前应用我们的更改。它还提供了.goToPage(n)方法,我们可以使用它来切换页面。 (goToPage有其他参数可用于控制页面之间的动画,但我们可以忽略这些参数,因为我们想要立即跳转的默认行为。)

首先添加一个新的事件处理程序。

  1. 目标: document.body
  2. 事件: Google广告:广告已初始化
  3. 操作:自定义:添加自定义操作
  4. 配置:您选择的名称(例如gwd.goToRandomPage),代码如下:

    var pages = 3; // adjust as appropriate
    var targetPage = Math.floor(Math.random() * pages);
    event.target.goToPage(targetPage);
    
  5. 在代码视图中,您可以看到这会产生如下内容:

     // This script block is auto-generated. Please do not edit!
    gwd.actions.events.registerEventHandlers = function(event) {
      gwd.actions.events.addHandler('document.body', 'adinitialized', gwd.goToRandomPage, false);
    };
    gwd.actions.events.deregisterEventHandlers = function(event) {
      gwd.actions.events.removeHandler('document.body', 'adinitialized', gwd.goToRandomPage, false);
    };
    

    您可以选择跳过GWD UI并使用标准的JavaScript事件处理API来完成同样的事情,其中​​包含以下内容:

    document.body.addEventListener('adinitialized', function() {
      var pages = 3; // adjust as appropriate
      var targetPage = Math.floor(Math.random() * pages);
      event.target.goToPage(targetPage);
    });
    

    但是,您可能希望避免这种情况,因为它会阻止GWD自动处理元素重命名等事情。

    如果你想跳转到一组特定的页面,而不是从所有页面中选择,你可以使用一组页面ID代替。

    var pageIds = ['page1_1', 'page1_2'];
    var targetPage = pageIds[Math.floor(Math.random() * pageIds.length)];
    event.target.goToPage(targetPage);
    

    为了将来参考,您可以找到大多数组件API described in the documentation。关于不涉及代码或不适合Stack Overflow的GWD的问题应该在the GWD support forum上询问。