私が実現したい機能は、新しいウィンドウを開いて新しいページを表示することですが、パラメータを渡す必要があり、パラメータをアドレスバーに表示することはできません。さらに、ページを更新しても、渡されたパラメータは失われず、新しいウィンドウ、つまりブラウザタブを手動で閉じない限り、常に存在する必要があります。 Baidu のプログラミングを通じて、オンライン コンテンツではこの効果はまったく得られず、落とし穴があることが分かりました。明らかに実現不可能ですが、あたかも事実であるかのように書かれています。そのため、タイトルに「画像があり、真実がある」とわざと付け加えました。私はあなたを騙しているわけではありません。その機能を実現できないのであれば、人を騙すために出てこないでください。 まずは私が作成したコードを書き出し、その後、他の人が実装できない落とし穴や、この点で注意する必要がある点を紹介します。 新しいウィンドウを開いてコードを渡す //新しいウィンドウを開いてパラメータを渡します。パラメータはアドレスバーに表示できません。ウィンドウが閉じられていない場合は継続的に更新されます。パラメータは常に有効です。handleWindow() { //主に新しいウィンドウを開く機能を実現する var route = this.$router.resolve({ 名前: 'Xterm', }) //主にパラメータを保存する機能を実装します sessionStorage.setItem("ip", "1.1.1.1"); window.open(route.href, '_blank') } 私のルーティング構成も掲載されています。 { パス: '/xterm', 非表示: true、 コンポーネント: () => import('@/views/monitor/xterm/index'), 名前: 'Xterm', }, これでページはパラメータを受け取ります //Vue 初期化メソッド。ページが初期化されたら、パラメータ created() を取得します。{ アラート(sessionStorage.getItem("ip")); this.ip = sessionStorage.getItem("ip") }, 真実の写真を投稿する これは、vue を通じて新しいウィンドウを開き、sessionStorage を通じてパラメータを渡すことによって行われます。なぜこの機能を実現するにはこの方法しか使えないのでしょうか? 落とし穴に足を踏み入れた私の体験をお話ししましょう。インターネット上で偽のコードを使って人を騙す悪人もいます。そのようなテストに耐えられないプログラマーはいるでしょうか? まず、この機能は新しいウィンドウを開く必要があるため、それを実行するには 3 つの方法があります。 最初の方法: 2 番目の方法: 3 番目の方法: ちなみに、vue2.0以降、普及が進むHTML5との整合性を保つため、router.goとrouter.pushは新しいウィンドウを開く属性をサポートしなくなりました。router.goは進むと戻るとして使用され、router.pushは特定のページへのガイドとして使用されます。このジャンプでは新しいウィンドウは開きませんが、履歴機能があります。1つのウィンドウに複数のタブがある場合は、図に示すようにこれを使用して複数のタブを開くことができます。 さて、router.resolve を使用すると、新しいウィンドウにジャンプできるので、パラメータを渡し始めますが、ここが難しいところです。オンライン転送によると、パラメータ転送には主に 2 つの種類があります。 //最初のパラメータをテストする testA (aaa) { const ルート = this.$router.resolve({ 名前: 'Xterm', パラメータ: { ip:aaa } }) window.open(route.href,'_blank') } //2番目のパラメータをテストする testA (bbb) { const ルート = this.$router.resolve({ パス: '/xterm', クエリ: { IP: bbb } }) window.open(route.href,'_blank') } 対応する受信パラメータは次のとおりです。 作成された() { //最初のアクセスパラメータをテストします this.ip = this.$route.params.ip // 2 番目のアクセス パラメータをテストします this.ip = this.$route.query.ip }, テストの結果、最初のタイプでは値を取得できないのに対し、2 番目のタイプでは渡されたパラメータの値がアドレス バーに公開されます。最初の方法では、あらゆる種類の特別な処理を実行しても、最良の結果は最初の値のみを取得することです。ページを再度更新すると、値は失われます。なぜこのようなことが起こるのでしょうか?ユーザーが行き詰まりを感じて更新ボタンをクリックしないことを誰が保証できるでしょうか? 自分でやるしかありませんでした。キャッシュを探して、localStorage と sessionStorage プロパティを見つけました。SessionStorage はデータを一時的に保存するために使用され、ウィンドウまたはタブを閉じると削除されます。localStorage は、Web サイト全体のデータを永続的に保存するために使用されます。保存されたデータには、手動で削除されるまで有効期限はありません。明らかに、sessionStorage で十分です。 これら 2 つの属性をサポートするブラウザのバージョンは次のとおりです。 この時点で、問題は実際に解決しました。実際、複雑ではありません。インターネット上の回答の質がまちまちなだけです。他の人が使用できるように記録しておきます。 要約する これで、Vue で新しいウィンドウを開いてパラメータを渡す方法についての記事は終了です。Vue で新しいウィンドウを開いてパラメータを渡す方法についての関連記事は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL 5.7.18 winx64 のインストールと設定方法のグラフィックチュートリアル
>>: win10 64 ビット システムに複数の JDK バージョンをインストールする際の切り替え問題と解決策の概要
目次1. Dockerを使用する利点2. Dockerをインストールする1) LinuxにDocke...
NULL および NOT NULL 修飾子、DEFAULT 修飾子、AUTO_INCREMENT 修...
MySQLのダウンロードとインストール(バージョン8.0.20)のチュートリアルは参考までに、具体的...
Tomcat CentOS インストールこのインストール チュートリアルでは、次の内容について説明し...
レスポンシブデザインとは、ウェブサイトの開発プロセス中に、ユーザーの操作やデバイス環境に応じて対応す...
目次序文 - Vue ルーティング1. 最も基本的なルーティング構成1. router/index....
JSXとは何かJSX は Javascript の構文拡張であり、JSX = Javascript ...
2019年から、AndroidとiOSの両方のプラットフォームでダークモードが使用され始めました。も...
日常の開発タスクでは、データ テーブル内のグループ化フィールドに基づいて統計データを取得するために、...
MySQLとMariaDBの関係MariaDB データベース管理システムは MySQL のブランチで...
フロントエンド開発では、ユーザーと直接やり取りするため、ユーザーが操作がスムーズで快適だと感じ、ネイ...
プロジェクト要件: 製品ツリー ノードをクリックすると、そのノードのすべての親ノードが取得され、表に...
MySQL は、コミュニティ エディション (コミュニティ サーバー) とエンタープライズ エディシ...
前提複雑なシナリオでは、複数の異なるページ間で大量のデータを使用したり変更したりする必要があります。...
学ぶ内容1. ソフトウェアのインストールとサーバーの設定。 2. (オプションですが、強くお勧めしま...