mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-18 11:17:19 +08:00
fix(android): setting hardwareBackButton: false in config now disabled default webview behavior (#22555)
resolves #18237
This commit is contained in:
@ -13,7 +13,7 @@ export class App implements ComponentInterface {
|
|||||||
|
|
||||||
componentDidLoad() {
|
componentDidLoad() {
|
||||||
if (Build.isBrowser) {
|
if (Build.isBrowser) {
|
||||||
rIC(() => {
|
rIC(async () => {
|
||||||
const isHybrid = isPlatform(window, 'hybrid');
|
const isHybrid = isPlatform(window, 'hybrid');
|
||||||
if (!config.getBoolean('_testing')) {
|
if (!config.getBoolean('_testing')) {
|
||||||
import('../../utils/tap-click').then(module => module.startTapClick(config));
|
import('../../utils/tap-click').then(module => module.startTapClick(config));
|
||||||
@ -24,8 +24,11 @@ export class App implements ComponentInterface {
|
|||||||
if (config.getBoolean('inputShims', needInputShims())) {
|
if (config.getBoolean('inputShims', needInputShims())) {
|
||||||
import('../../utils/input-shims/input-shims').then(module => module.startInputShims(config));
|
import('../../utils/input-shims/input-shims').then(module => module.startInputShims(config));
|
||||||
}
|
}
|
||||||
|
const hardwareBackButtonModule = await import('../../utils/hardware-back-button');
|
||||||
if (config.getBoolean('hardwareBackButton', isHybrid)) {
|
if (config.getBoolean('hardwareBackButton', isHybrid)) {
|
||||||
import('../../utils/hardware-back-button').then(module => module.startHardwareBackButton());
|
hardwareBackButtonModule.startHardwareBackButton();
|
||||||
|
} else {
|
||||||
|
hardwareBackButtonModule.blockHardwareBackButton();
|
||||||
}
|
}
|
||||||
if (typeof (window as any) !== 'undefined') {
|
if (typeof (window as any) !== 'undefined') {
|
||||||
import('../../utils/keyboard/keyboard').then(module => module.startKeyboardAssist(window));
|
import('../../utils/keyboard/keyboard').then(module => module.startKeyboardAssist(window));
|
||||||
|
@ -8,6 +8,20 @@ interface HandlerRegister {
|
|||||||
id: number;
|
id: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When hardwareBackButton: false in config,
|
||||||
|
* we need to make sure we also block the default
|
||||||
|
* webview behavior. If we don't then it will be
|
||||||
|
* possible for users to navigate backward while
|
||||||
|
* an overlay is still open. Additionally, it will
|
||||||
|
* give the appearance that the hardwareBackButton
|
||||||
|
* config is not working as the page transition
|
||||||
|
* will still happen.
|
||||||
|
*/
|
||||||
|
export const blockHardwareBackButton = () => {
|
||||||
|
document.addEventListener('backbutton', () => {}); // tslint:disable-line
|
||||||
|
}
|
||||||
|
|
||||||
export const startHardwareBackButton = () => {
|
export const startHardwareBackButton = () => {
|
||||||
const doc = document;
|
const doc = document;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user