[無効] WeChatアプレット<web-view>コンポーネントが配置されているページに戻るボタンがないという問題を解決します

2018年6月15日更新
;提案手法は黒の技術に属し、原則としては、前のページに小さなプログラムのAPIバックを使用するようにして、何のバック履歴は存在しませんし、プログラムを終了している
が、最近、アプレットAPIのバグに更新する必要があり、この方法を使用できない、戻ったときに履歴がない場合、ホームページに戻り、公式ドキュメントに記載されているようにプログラムを終了しませんが、なぜ以前に終了したのか、それはバグだと思います。

問題が発生する

<web-view>コンポーネントは、WeChat Mini Programバージョン1.6.4でサポートされている機能です。Webページのホストに使用されるコンテナは、Mini Programページ全体を自動的に埋めます。ただし、個人プログラムおよび海外プログラムはサポートされていません。

アプレットでチャネルを開くために、私が取り組んでいるプロジェクトが新しいアプレットを作成しました。このアプレットにはページが1つしかありません。ページのコードは非常にシンプルで、<web-view>コンポーネントであり、そのsrcは元のh5に設定されていますサイト

アプレットは正常に実行でき、h5の元の機能を使用できますが、厄介なポイントが発生しました-iOSシステムで、アプレットページの左上隅に戻るボタンがありません

不思議に思うかもしれませんが、私たちのプロジェクトでは<web-view>コンポーネントも使用していますが、なぜそれがあるのですか?

実際、この条件が満たされている必要があります。

  • アプレットのホームページは、<web-view>コンポーネントを含むページです。

アプレットにページが1つしかない場合、左上隅(iOSシステムの下)に戻るボタンはなく、終了アプレットは右上隅の「丸」ボタンからのみ終了でき、Androidシステムは携帯電話の戻るボタンからも終了できます。
アプレットに複数のページがあり、互いにジャンプしている場合は、左上隅(iosシステムの下)に戻るボタンがあり、プロジェクトに戻るボタンがあります。ジャンプが発生し、<web-viewをホストしているためです>コンポーネントのページは、アプレットのホームページであってはなりません。

ソリューション戦略

;理由の分析は、実際には、何の歴史のジャンプは、1ページだけでは、解決策は、非常に単純ではありませんすぐの<web-ビュー>ページにジャンプし、家に入るときにホームページとして空白のページを追加することです
が、コード上で行うこと一部の処理では、常にジャンプすることを許可できません。ユーザーが<web-view>から戻ったときは、アプレットを終了する必要があります。

//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页了
    }
})

上記のコードは、アプレットの左上隅に戻るボタンがないという問題を解決できます。

まだ問題がある

しかし、問題は半分しか解決されておらず、操作を試すことができます。

  • アプレットを開いたら、ページの[転送]操作をトリガーして、アプレットを任意のWeChat連絡先に転送します。転送が正常に完了したら、WeChat転送メッセージをクリックしてアプレットを再度開きます。この時点で、ええとわかります!戻るボタンはどうしてですか?

アプレットにはホームページとWebビューページの2つのページしかないため、この問題はアプレットの転送に関連しています。ユーザーはWebビューページでのみ転送をトリガーできます(ホームページがジャンプまたは戻るために表示されないため)ユーザーの前で)転送する場合、現在のページアドレスが開始アドレスとして使用されるため、WeChatをクリックしてメッセージを転送すると、ホームページではなくWebビューページに
入ります。ホームページを入力せずに、Webビューページを直接入力すると、次のようになります。Webビューページはホームページであり、問​​題はトップに戻ります。解決策は、転送されたページアドレスがホームページになるように転送設定を構成することです。

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

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

おすすめ

転載: www.cnblogs.com/homehtml/p/12722345.html