Javascript 从Google Web Designer中的随机页面开始

Javascript 从Google Web Designer中的随机页面开始,javascript,html,random,google-web-designer,Javascript,Html,Random,Google Web Designer,我已经使用谷歌网页设计师几个月了,我有一个问题。我不知道是否可以在GWD中执行以下操作: 我希望index.html文件加载一个不同的随机页面,在3个页面之间进行选择。当你点击“重新加载”时,它会加载另一个随机页面,依此类推。页面不需要按顺序显示。我正试图找出如何做到这一点,但到目前为止还没有成功。这可以通过自定义JavaScript事件处理程序来实现 元素在显示任何内容之前触发一个a初始化的事件,我们可以使用该事件确保在用户看到第一页之前应用我们的更改。它还提供了一个.goToPage(n)方

我已经使用谷歌网页设计师几个月了,我有一个问题。我不知道是否可以在GWD中执行以下操作:


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

这可以通过自定义JavaScript事件处理程序来实现

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

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

  • 目标:document.body
  • 事件:Google广告:广告已初始化
  • 操作:自定义:添加自定义操作
  • 配置:为以下代码选择的名称(例如
    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。有关GWD的问题,如果不涉及代码或不适合堆栈溢出,则应改为在上提问。

    非常感谢!您的解决方案非常有效:)