[Desactivado] Solucione el problema de que no hay un botón de retroceso en la página donde se encuentra el componente <web-view> del applet WeChat

06/15/2018 actualización
método propuesto pertenece a la tecnología negro, el principio es el uso de una pequeña vuelta api programa a la página anterior, y luego no habrá historia de nuevo, y luego salir del programa;
sin embargo, recientemente subprograma debe actualizarse en el error de API, este método Y no se puede usar, si no hay historial al regresar, volverá a la página de inicio, no saldrá del programa, como se describe en la documentación oficial, pero por qué salió antes, creo que es un error.

El problema aparece

El componente <web-view> es una función compatible con WeChat Mini Program versión 1.6.4. El contenedor utilizado para alojar páginas web llenará automáticamente toda la página del Mini Program. Sin embargo, los programas personales y los programas en el extranjero no son compatibles.

Para abrir canales en el applet, el proyecto en el que estoy trabajando ha creado un nuevo applet. Este applet tiene solo una página. El código en la página es muy simple, es un componente <web-view>, y su src está configurado en el h5 original. Sitio

El applet puede ejecutarse normalmente, puede usar la función original de h5, pero encontró un punto incómodo: en el sistema ios, no hay un botón de retorno en la esquina superior izquierda de la página del applet ;

Quizás se esté preguntando, nuestro proyecto también utiliza el componente <web-view>, ¿por qué lo tenemos?

De hecho, esta condición debe cumplirse:

  • La página de inicio del applet es la página que contiene el componente <web-view>

Si el applet tiene solo una página, no hay un botón de retorno en la esquina superior izquierda (debajo del sistema ios), y el applet de salida solo puede salir del botón "círculo" en la esquina superior derecha, y el sistema Android también puede salir a través del botón de retorno del teléfono móvil.
Si hay varias páginas en el applet y ha habido un salto entre ellas, entonces hay un botón de retroceso en la esquina superior izquierda (debajo del sistema ios), y hay un botón de retroceso en su proyecto. Es porque se ha producido un salto y los hosts <web-view > La página del componente no debe ser la página de inicio del applet.

Estrategia de solución

Analice la razón, de hecho, no hay un salto histórico, solo hay una página, la solución también es muy simple, es agregar una página vacía como página de inicio, al ingresar a la página de inicio, saltar inmediatamente a la página <web-view>;
pero el código debe hacerse Para algunos procesos, no se puede permitir que salte siempre . Cuando el usuario vuelve de <web-view>, debe salir del applet;

//app.js代码
App({
    onHide() {
        this.data.webShowed = false;
    },
    data: {
        webShowed: false //标记web-view页面是否已经显示过了
    }
});
<!--首页wxml代码-->
无
//首页js代码
var app = getApp();
Page({
    onShow() {
        //如果已经显示过web-view页了,则执行后退操作,否则就跳到web-view页
        if (!app.data.webShowed) {
            wx.navigateTo({
                url: '/pages/web-view/web-view'
            })
        } else {
            wx.navigateBack({
                delta: 1
            });
        }
    }
})
<!--web-view 页面wxml代码-->
<web-view src="url"></web-view>
//web-view 页面js代码
Page({
    onShow() {
        var app = getApp();
        app.data.webShowed = true;//标记已经显示过web-view页了
    }
})

El código anterior puede resolver el problema del botón de no retorno en la esquina superior izquierda del applet;

Aún tengo problemas

Pero el problema está solo medio resuelto, puede intentar una operación:

  • Después de abrir el applet, active la operación [Reenviar] en la página para reenviar el applet a cualquier contacto de WeChat. Después del reenvío exitoso, haga clic en el mensaje de reenvío de WeChat para volver a abrir el applet; en este momento encontrará, ¡eh! ! ¿Cómo es que el botón de retroceso? ! !

Este problema está relacionado con el reenvío del applet, porque nuestro applet solo tiene dos páginas: la página de inicio y la página de vista web. El usuario solo puede activar el reenvío en la página de vista web (porque la página de inicio saltará o volverá y no se puede mostrar en el Delante del usuario), al reenviar, la dirección de la página actual se usará como dirección de apertura, por lo que después de hacer clic en WeChat para reenviar el mensaje, ingresará a la página de vista web en lugar de la página de inicio;
sin ingresar a la página de inicio, ingresar directamente a la página de vista web es equivalente a La página de vista web es la página de inicio, y el problema vuelve al principio, por lo que la solución es configurar los ajustes de reenvío para que la dirección de la página reenviada sea la página de inicio;

//web-view页 js代码
Page({
    data: {
        src: ''
    },
    onShow() {
        wx.showShareMenu({
            withShareTicket: true
        })

        app.data.webShowed = true;
    },
    onShareAppMessage() {
        return {
            title: '分享标题',
            path: '/pages/index/index' // 分享出去后打开的页面地址
        }
    }
})

Supongo que te gusta

Origin www.cnblogs.com/homehtml/p/12722345.html
Recomendado
Clasificación