首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google发布者标签奖励广告意外地重新加载Mithril SPA

Google发布者标签奖励广告意外地重新加载Mithril SPA
EN

Stack Overflow用户
提问于 2022-08-03 14:36:15
回答 1查看 125关注 0票数 1

当我在本地主机服务器中运行这段代码并单击#!/reward页面中的Show按钮时,奖励广告会显示,但会将我发送回#!/页面。然而,在这个在线代码编辑器中,这个SPA (单页应用程序)的工作原理是:它播放广告,但把你留在奖励页面上。显然,这肯定与应用程序在编辑器上的iframe中运行有关,但为什么我在本地主机上得到“意外”行为,在这些在线编辑器中得到“预期”行为(我还在jsbin和jsfiddle以及相同的结果中测试过)。

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script>
</script>
</head>
<body>
<div id="App"></div>
<script src="https://unpkg.com/mithril/mithril.min.js"></script>
<script>
window.googletag = window.googletag || {cmd: []};
googletag.cmd.push(() => {
    googletag.enableServices();
    googletag.pubads().addEventListener('rewardedSlotReady', event => event.makeRewardedVisible());
    googletag.pubads().addEventListener('rewardedSlotClosed', event => googletag.destroySlots([event.slot]));
});

const Home = {
    view: () => m('button', {
        onclick: () => m.route.set('/reward')
    }, 'Go to Reward Page >>>')
}

const Reward = {
  view: () => [
    m('button', {
      onclick: () => m.route.set('/')
    }, '<<< Return to Home Page'), 
    m('button', {
      onclick: () => googletag.cmd.push(() => {
        const rewardedSlot = googletag.defineOutOfPageSlot('/22639388115/rewarded_web_example', googletag.enums.OutOfPageFormat.REWARDED);
        if(rewardedSlot)
        {
          rewardedSlot.addService(googletag.pubads());
          googletag.display(rewardedSlot);
        }
      })
    }, 'Show Ad')
  ],
}

m.route(document.getElementById('App'), '/', {
    '/': Home,
    '/reward': Reward
});
</script>
</body>
</html>

更新 (2022.08.03 11:16)

我可以通过将代码放在子目录中,然后在iframe中运行它来确认这一点,这样就可以得到预期的行为。我还得弄明白为什么没有iframe就不行了。下面是一个说明这两种情况的小故障页面。单击预览窗格上的“视图”按钮,在其自己的窗口中查看它,并注意其差异。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-04 15:16:59

奖励广告的特定代码将#goog_rewarded附加到页面URL的末尾。这就是在使用默认#时迫使意外行为返回到Mithril的路由器的默认路由的原因!策略。添加的#触发一个hashchange事件,Mithril无法解析该路由。将m.route.prefix设置为不同的策略(在我的例子中是m.route.prefix = '?')可以解决问题,因为它阻止查找发生。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73223369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档