我已经使用 Google Web Designer 几个月了,我有一个问题。我不知道GWD是否可以做到:
我希望 index.html
文件加载不同的随机页面,在 3 个页面之间进行选择。当您点击重新加载时,它应该加载另一个随机页面,依此类推。页面不需要按顺序显示。我正在尝试找出如何做到这一点,但到目前为止还没有成功。
最佳答案
这可以通过自定义 JavaScript 事件处理程序来完成。
<gwd-doubleclick>
元素触发 adinitialized
显示任何内容之前的事件,我们可以使用它来确保在用户看到第一页之前应用我们的更改。它还提供了.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);
在代码 View 中,您可以看到这会产生类似以下内容的内容:
// 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 。有关 GWD 的问题,如果不涉及代码或不适合 Stack Overflow,请在 the GWD support forum 上提问。相反。
关于javascript - 从 Google Web Designer 中的随机页面开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37622911/