1

Google Web Designer を数か月使用していますが、質問があります。GWDでできるかどうかわかりません:

index.html3 つのページから選択して、別のランダムなページをファイルにロードする必要があります。リロードを押すと、別のランダムなページが読み込まれます。ページは順番どおりに表示する必要はありません。これを行う方法を見つけようとしていますが、これまでのところ成功していません。

4

1 に答える 1

1

これは、カスタム JavaScript イベント ハンドラーを使用して実現できます。

この<gwd-doubleclick>要素は、adinitializedコンテンツが表示される前にイベントを発生させます。これを使用して、ユーザーが最初のページを表示する前に変更が適用されていることを確認できます。.goToPage(n)また、ページを切り替えるために使用できるメソッドも提供します。(goToPageには、ページ間のアニメーションを制御するために使用できる追加の引数がありますが、すぐにジャンプするという既定の動作が必要なため、それらを無視できます。)

まず、新しいイベント ハンドラーを追加します。

  1. ターゲット: document.body
  2. イベント: Google 広告: 広告が初期化されました
  3. action:カスタム: カスタム アクションを追加
  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 が要素の名前変更などを自動的に処理できなくなるため、通常はこれを避けた方がよいでしょう。

すべてのページから選択するのではなく、特定のページ セットの 1 つにジャンプしたい場合は、代わりにページ ID の配列を使用できます。

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

今後の参考のために、ドキュメントに記載されているほとんどのコンポーネント API を見つけることができます。コードを含まない GWD に関する質問、またはスタック オーバーフローに適さない GWD に関する質問は、代わりにGWD サポート フォーラムで質問する必要があります。

于 2016-06-03T21:32:24.557 に答える