4

我正在使用 Cordova 2.2.0 框架内的 Android 应用程序,并且在基于 GPT 的广告上获得点击时遇到了很多麻烦。(当然我不是第一个尝试这个的人。)

GPT 使用广告素材呈现友好的 IFRAMES,主要包含<a href="http://www.example.com/clickthrough/yadayadayada" target="_blank">(ad creative)</a>

在浏览器和 iOS 上,点击广告将在新的浏览器窗口中打开点击,这就是我想要在这里发生的事情。但是在我的 Kindle Fire HD 和 Droid 4 上的原生应用程序上,点击广告会在 IFRAME 空间中打开点击槽页面,因此您会在我的另一个页面中看到页面的左上角 320x50。

我尝试编辑白名单,但这不是一个选项,因为广告素材可以来自任何地方(我们使用多个广告网络来填充我们的剩余广告),并且因为广告呈现在我无法控制的 IFRAME 中我没有能够将 HREF 包装在 中javascript:window.open(),但我还没有找到让 Android Java 代码拦截这些点击的方法。

我也研究过 AdMob,但我的老板不想改变我们移动网站的广告体验,移动网站有 1 到 3 个随页面滚动的广告。

编辑能够在广告所在的页面上呈现 AdMob 视图,以便视图随网站滚动,将起作用。

我该怎么做才能在新窗口中打开这些点击?

谢谢你的帮助。

4

1 回答 1

3

我将此 JavaScript 代码添加到加载或刷新广告的函数中:

$('.advertisement iframe').each(function() {
    $(this).one('load', function() {
        makeOpenWindowHref(this);
    });
});

具有以下功能:

function makeOpenWindowHref(element) {
    if (isNativeApp){
        $(element).contents().find('a[href^="http"]').each(function() {
            $(this).click(function(event){
                event.preventDefault();
                navigator.app.loadUrl($(this).attr("href"), {
                    openExternal:true
                });
            });
        });
    }
}

这实质上会修改 IFRAME 内容,以使用 Cordovanavigator.app.loadUrl()函数将点击打开到新窗口中。

于 2012-12-03T15:45:29.327 回答