Dom*_*Dom 6 html javascript jquery-mobile phonegap-build inmobi
我使用jQuery Mobile创建了一个移动应用程序,并通过PhoneGap Build v2.5为iOS和Android构建了它.然后我使用他们的javascript api成功添加了inmobi广告.广告显示效果不错,但是当广告接管应用时用户点击广告时会出现问题.这不是Android中的问题,因为用户有后退按钮,但在iOS设备上,用户卡住了,无法返回我的应用程序.
我已成功设置我的应用程序中包含的所有外部链接,通过将所有URL传递给此函数在设备的浏览器中打开:
function openNewBrowser(url) {
window.open(encodeURI(url), '_system');
return false;
}
Run Code Online (Sandbox Code Playgroud)
但是inmobi广告在我的应用程序中的iframe内部,我无法控制他们如何通过他们的网址.我还尝试绑定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;
}
});
Run Code Online (Sandbox Code Playgroud)
但是"别的"永远不会被绊倒.inmobi广告只是接管应用程序,用户被迫杀死并重新启动应用程序回到可用状态.我应该听一个不同的事件吗?
以下是我调用inmobi广告的方式:
var inmobi_conf = {
siteid : "*******mySiteId*******",
slot : "15",
manual: true,
test: true,
targetWindow: "_blank"
};
Run Code Online (Sandbox Code Playgroud)
我会(并且已经尝试)将"targetWindow"设置为_system,但唯一有效的参数是"_blank"和"_top".
有没有人知道如何获得iFrame链接(你不能设置为_system)在本机浏览器中打开而不是接管应用程序或获取inmobi广告不接管应用程序?
我最终通过在 config.xml 中进行设置来解决这个问题。这是一个糟糕的解决方法,但它是我拥有的最好的解决方法。希望其他人能想出更好的东西。
使用虚拟对象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"
};
Run Code Online (Sandbox Code Playgroud)
参考