我通过 Phonegap 应用程序的 inappbrowser 插件加载网页。 该应用程序显示了一个网站和一个网上商店,两者都可以通过网络访问。 我无法添加“返回应用程序”按钮(从 PC 访问该网站时这没有意义)。所以我想要在phonegap应用程序中自定义导航(我更喜欢 Bootstrap ),这样我就可以在多个不同的网站之间导航。
不幸的是,导航被 inappbrowser 隐藏了。有没有办法在 inappbrowser 顶部显示应用程序 html 导航?
非常感谢!
使用 css 添加绝对位置、z-index 999999 和显示 block 没有帮助
最佳答案
实现此目的的一种方法是通过在 Cordova 应用程序 Webview 中生成按钮将按钮注入(inject)到您的网页中:
var inAppBrowserRef = cordova.InAppBrowser.open("http://www.mypage.com", "_blank");
inAppBrowserRef.addEventListener('loadstop', function(e) {
inAppBrowserRef.executeScript({
code: '\
var body = document.querySelector("body");\
var button = document.createElement("div");\
button.innerHTML = "Return to app";\
button.classList.add("close_button");\
button.onclick = function() {\
webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify({action: "closeIAB"}));\
};\
body.appendChild(button);\
'
});
});
然后,您可以为单击关闭 inappbrowser 的按钮时发布的消息添加监听器:
inAppBrowserRef.addEventListener("message", function (params){
if(params.data.action === "closeIAB"){
inAppBrowserRef.close();
}
});
您还可以从 Cordova 应用程序中注入(inject)按钮的样式:
inAppBrowserRef.insertCSS({
"code": "\
.close_button {\
position: fixed;\
bottom: 0;\
z-index: 500;\
width: 100%;\
background: white;\
color: black;\
padding: 10px;\
font-size: 20px;\
}"
});
或者,如果您愿意,可以将按钮样式添加到网页的 CSS 中(如果它在您的控制之下)。
同样,如果您不喜欢动态创建按钮 HTML 的想法,您可以将其包含在网页中,但默认情况下隐藏它,除非应用程序注入(inject)了特定的类:
inAppBrowserRef.addEventListener('loadstop', function(e) {
inAppBrowserRef.executeScript({
code: '\
var body = document.querySelector("body");\
body.classList.add("is_app");\
'
});
});
在您的网站 CSS 中:
body:not(.is_app) .close_button{
display: none;
}
请注意 postMessage API 的仿真已添加到 cordova-plugin-inappbrowser适用于 Android 和 iOS this PR尚未进入latest release version on npm (v3.0.0
),因此您需要直接从 Github master 分支 (v3.1.0-dev
) 安装该插件:
cordova plugin add https://github.com/apache/cordova-plugin-inappbrowser
关于android - 在 inappbrowser Phonegap webview 应用程序顶部显示自定义导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56557948/