1

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

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

4

1 回答 1

1

这可以通过自定义 JavaScript 事件处理程序来完成。

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

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

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

    var pages = 3; // adjust as appropriate
    var targetPage = Math.floor(Math.random() * pages);
    event.target.goToPage(targetPage);
    

在代码视图中,您可以看到这会产生如下内容:

 // 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 。不涉及代码或不适合 Stack Overflow 的 GWD 问题应在 GWD 支持论坛上提出。

于 2016-06-03T21:32:24.557 回答