我使用jQuery Mobile创建了一个移动应用程序,并通过PhoneGap Build v2.5在iOS和Android上构建了该应用程序。然后,我使用其javascript API成功添加了inmobi广告。广告显示得很好,但是当用户接管应用程序时用户单击广告时,就会出现问题。在Android中这不是问题,因为用户有一个后退按钮,但是在iOS设备上,该用户被卡住了,无法返回到我的应用程序。

通过将所有url传递给此函数,我已经成功设置了应用程序中包含的所有外部链接以在设备的浏览器中打开:

function openNewBrowser(url) {
    window.open(encodeURI(url), '_system');
    return false;
}

但是inmobi广告位于我的应用程序中的iframe中,我无法控制它们如何传递网址。我还尝试绑定(bind)jQuery Mobile来捕获所有pagebeforechange事件,并使用以下方法进行相应处理:
$(document).bind("pagebeforechange", function(e, data) {
    if(typeof data.toPage === 'object' ||
        data.toPage.indexOf("index.html#") >= 0) {
        //internal URL so do nothing
    } else {
        //external URL so send to openNewBrowser
        console.log('page is external');
        openNewBrowser(data.toPage);
        e.stopPropagation();
        return false;
    }
});

但是“别的”永远不会被绊倒。有害广告仅接管了该应用程序,用户被迫终止并重新启动该应用程序,使其恢复可用状态。我应该听其他事件吗?

这是我如何调用inmobi广告的方法:
var inmobi_conf = {
    siteid : "*******mySiteId*******",
    slot : "15",
    manual: true,
    test: true,
    targetWindow: "_blank"
};

我将(并且尝试将)“targetWindow”设置为_system,但是唯一有效的参数是“_blank”和“_top”。

有谁知道一种方法来获取iFrame链接(您无法将其设置为_system)在 native 浏览器中打开,而不是接管该应用程序或获取Inmobi广告而不接管该应用程序吗?

最佳答案



使用伪iframe作为目标也可以:

/*
document.body.insertAdjacentHTML
  ("beforeend",
    "<iframe id='myframe' width='0' height='0'></iframe>"
  )
*/

document.body.appendChild
  (
  document.createElement("iframe")
  ).setAttribute("id", "myframe")

var inmobi_conf = {
    siteid : "*******mySiteId*******",
    slot : "15",
    manual: true,
    test: true,
    targetWindow: "myframe"
};

引用
  • HTML Training, Anchor Elements: Link Options
  • 关于javascript - 在设备浏览器中打开InMobi iframe链接(Phonegap构建),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16497997/

    10-11 15:48