[Примечания] Реализован взаимный переход между апплетом и страницей H5.

Апплет WeChat

1. Предпосылки

Предыстория запроса следующая.В апплете нажмите, чтобы просмотреть соглашение, подписанное пользователем, и перейдите на страницу сведений о соглашении.Бывает, что страница сведений о соглашении уже существует в другом проекте H5, поэтому я хочу перейти прямо к нему, чтобы избежать дальнейшего развития небольшой программы Страница сведений о протоколе для версии программы

2. Апплет переходит на страницу H5.

Чтобы запустить страницу H5 в апплете, ее нужно встроить вweb-viewОбратите внимание: предмет может быть только один. Демонстрация: откройте веб-страницу Baidu в апплете Создайте новую папку веб-просмотра в src/pages/ в проекте апплета, содержащую wxml/wxss/json/js.

wxml:
<web-view src="{{ src }}"></web-view>
js:在onLoad里面获取到url这个参数,然后赋值给data,这样在wxml里面就能取到src的值。
Page({
	data: {
		url: '',
	},
	onLoad: function (param) {
		this.setData({
			url: decodeURIComponent(param.url),
		})
	}
});

json/wxss — это просто пустой файл.
Как перейти на страницу H5 на странице апплета

wx.navigateTo({
    url: '../webview/index?url=https://www.baidu.com/'
});

Таким образом, успешно реализован переход от апплета к странице H5.

3. Страница H5 возвращается в апплет

Чтобы вернуться на страницу апплета со страницы H5, вам нужно использовать метод перехода, предоставляемый WeChat SDK.

 window.wx.miniProgram.navigateTo({
    url: `/page/account/index`,
 });

Чтобы использовать метод WeChat SDK, вам необходимо сначала отправить подтверждение подписи wx.config.

В-четвертых, яма, с которой столкнулась мини-программа, и H5 прыгают друг на друга.

  1. [Описание проблемы] Проблема в том, что URL в wx.miniProgram.navigateTo нельзя перепрыгнуть
    [Решение проблем]: Панель вкладок, настроенная в app.json, и URL-адрес в wx.navigateTo ссылаются на одну и ту же страницу.
    Во-первых, путь pages/account/index уже существует в app.json, то есть URL-адрес window.wx.miniProgram.navigateTo(url) со страницы H5 уже совпадает с URL-адресом app.json. В это время нельзя так прыгать, а менять наwindow.wx.miniProgram.reLaunch(url)

Резюме: если URL-адрес определен в app.json, используйте reLaunch для перехода, если нет, используйте miniProgram.navigateTo(url)

  1. [Описание проблемы] Когда я перешел на страницу сведений о протоколе H5 в апплете, я попал на страницу системной ошибки (страница ошибки, определенная в проекте). апплет из апплета.Введите, не появится.
    [Решение проблемы] Здесь я считаю, что это как-то связано с состоянием входа в систему, потому что я сначала захожу в официальную учетную запись.В это время браузер имеет состояние входа, поэтому доступ к странице сведений о протоколе в апплете не приведет к входу в страница системной ошибки.
    Процесс обнаружения проблемы: Страница H5 является страницей vue. Сначала запустите отладчик из файла маршрутизации /routes/index.js. Действительно, проблема обнаружена в логине js. Проверьте логин js. процесс выхода из системы сначала, а затем вход в систему (это из-за разных брокерских компаний, выход из системы должен очистить данные предыдущей брокерской компании, ха-ха, текущий счет, иначе чем длиннее запись, тем дольше она не будет расширена) В процесс входа в систему для выхода из системы, cgi в это время выдает исключение, которое просто захвачено глобально, поэтому он попал на страницу системной ошибки. Последнее решение состоит в том, чтобы попытаться перехватить исключение при выходе из системы и не перехватывать исключение глобально.
    try {await request('logout.cgi')} catch(e) {console.log('error')}
    
    Запишите вопрос 2, потому что я хочу сказать себе, что жучки бывают часто, и если вы столкнетесь с ними, просмотрите отладчики один за другим, чтобы увидеть, откуда берется ошибка. Имейте это в виду.