HTMLページ間でパラメータを渡すフロントエンド方式の詳細な説明

HTMLページ間でパラメータを渡すフロントエンド方式の詳細な説明

プロジェクトでよくある状況として、案件リストなどのリストが存在することがあります。リスト内の項目をクリックすると詳細ページに移動します。詳細はクリックされたレコードに基づいて生成されます。ケースと特定の詳細ページは後からユーザーによって追加されるため、書き始めるときに網羅的に記述することは不可能です。したがって、ページにジャンプするときには、パラメータを渡して、このパラメータを通じてデータ要求を行い、バックグラウンドから返されたデータに従ってページを生成する必要があります。したがって、a ラベルを飛び越えることは絶対に機能しません。
フォームを書くことはよくあります。送信時にパラメータを渡すことができます。フォームを使用して非表示にすると、効果が得られるはずです。

さらに、window.location.href と window.open でも同じ効果が得られます。

1. フォームを通じてパラメータを渡す

<html lang="ja">
    <ヘッド>
    <!--Web サイトのエンコード形式、UTF-8 国際エンコード、GBK または gb2312 中国語エンコード -->
        <meta http-equiv="content-type" content="text/html;charset=utf-8" />
        <meta name="キーワード" content="キーワード 1、キーワード 2">
        <meta name="説明" content="ウェブサイトの説明">
        <meta name="著者" content="イヴェット・ラウ">
        <title>ドキュメント</title>
        <!--css js ファイルの紹介-->
        <!-- <link rel="ショートカットアイコン" href="images/favicon.ico"> -->
        <link rel="スタイルシート" href=""/>
        <スクリプト タイプ = "text/javascript" src = "jquery-1.11.2.min.js"></スクリプト> 
    </head>
    <本文>      
        <フォーム名 = "frm" メソッド = "get" アクション = "receive.html" onsubmit = "return foo()" スタイル = "position:relative;">
            <input type="hidden" name="hid" value = "" index = "lemon"> 
            <img クラス = "more" src = "main_jpg10.png" />
            <input type = "submit" style = "position:absolute;left:10px;top:0px;width:120px;height:40px;opacity:0;cursor:pointer;"/>
        </フォーム>     
        <フォーム名 = "frm" メソッド = "get" アクション = "receive.html" onsubmit = "return foo()" スタイル = "position:relative;">
            <input type="hidden" name="hid" value = "" index = "aaa"> 
            <img クラス = "more" src = "main_jpg10.png" />
            <input type = "submit" style = "position:absolute;left:10px;top:0px;width:120px;height:40px;opacity:0;cursor:pointer;"/>
        </フォーム>
        <フォーム名 = "frm" メソッド = "get" アクション = "receive.html" onsubmit = "return foo()" スタイル = "position:relative;">
            <input type="hidden" name="hid" value = "" index = "bbb"> 
            <img クラス = "more" src = "main_jpg10.png" />
            <input type = "submit" style = "position:absolute;left:10px;top:0px;width:120px;height:40px;opacity:0;cursor:pointer;"/>
        </フォーム>
    </本文>
</html>
<スクリプト>
    関数foo(){
        var frm = window.event.srcElement;
        frm.hid.value = $(frm.hid).attr("インデックス"); 
        true を返します。
    }
</スクリプト>

画像をクリックすると、receive.html ページにリダイレクトされます。ページの URL は次のようになります。

渡したい文字列が渡されました。

次に現在のURLを文字列に分割します

window.location.href.split("=")[1]//レモンを入手

渡す必要のあるパラメータを取得したら、これに基づいて次のステップに進むことができます。

文字列分割を通じて URL によって渡されたパラメータを取得する上記の方法に加えて、通常のマッチングと window.location.search メソッドを通じてパラメータを取得することもできます。

2. window.location.href 経由

たとえば、リストをクリックするとき、detail.html ページに文字列を渡す必要があります。すると、detail.html ページは渡された値に基づいて、Ajax インタラクション データを通じてページのコンテンツを読み込みます。

var index = "lemon"; var url = "receive.html?index="+index; $("#more").click(function(){ window.location.href = url; });

現在のページは recieve.html ページに置き換えられ、ページの URL は次のようになります。

次に、上記の方法を使用して必要なパラメータを抽出します。

3. window.location.open から

現在のページを変更するのではなく、新しいページを開きたい場合は、window.location.hrefは適用されません。この場合は、window.location.open()を使用して次の操作を実行する必要があります。

window.open() 関数について簡単に紹介します。window.open() には 3 つのパラメータがあります。最初のパラメータは開くページの URL、2 番目のパラメータはウィンドウのターゲット、3 番目のパラメータは特定の文字列と、新しいページがブラウザ履歴内の現在読み込まれているページを置き換えるかどうかを示すブール値です。渡す必要があるのは最初のパラメータだけです。 2 番目のパラメータには、「_blank」、「_self」、「_parent」、「_top」などの特殊なウィンドウ名を指定することもできます。「_blank」は新しいウィンドウを開き、「_self」は window.location.href と同じ効果を実現します。

上記の例を続けます:

<スクリプト>
    var index = "レモン";
    var url = "receive.html?index="+index;
    $("#more").click(function(){
        ウィンドウを開く(url)
    });
</スクリプト>

こうすると、クリックすると新しいページが開き、そのページの URL アドレスは上記と同じになります。

ブラウザのセキュリティ制限により、一部のブラウザではポップアップウィンドウの設定に制限が加えられています。ほとんどのブラウザにはポップアップウィンドウブロッカーが組み込まれています。そのため、ポップアップウィンドウがブロックされる可能性があります。ポップアップウィンドウがブロックされる場合は、2 つの可能性を考慮する必要があります。1 つは、ブラウザの組み込みブロッカーがポップアップウィンドウをブロックしていることです。この場合、window.open() は Null を返す可能性があります。このとき、ポップアップウィンドウがブロックされているかどうかを判断するには、返された値を監視するだけで済みます。

var newWin = window.open(url);
if(newWin == null){
    alert("ポップアップがブロックされました");
}

もう 1 つは、ブラウザ拡張機能やその他のプログラムによってポップアップ ウィンドウがブロックされている場合です。この場合、window.open() は通常エラーをスローします。そのため、ポップアップ ウィンドウがブロックされているかどうかを正確に検出するには、戻り値を検出しながら、window.open() を try-catch ブロックにカプセル化する必要があります。上記の例は、次のように記述できます。

<スクリプト>
    var ブロック = false;
    試す{
        var index = "レモン";
        var url = "receive.html?index="+index;
        $("#more").click(function(){
           var newWin = window.open(url);
           if(newWin == null){
               ブロック = true;
           }
        });
    } キャッチ(例){
        ブロック = true;
    }
    if(ブロック){
        alert("ポップアップウィンドウがブロックされました");
    }    
</スクリプト>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  DockerにMinIOをインストールするための詳細な手順

>>:  モバイルデバイスにおける適応レイアウトの問題に関する簡単な説明 (レスポンシブ、rem/em、Js ダイナミクス)

推薦する

JavaScript の Set データ構造の詳細な説明

目次1. セットとは何か2. セットコンストラクタ2.1) 配列2.2) 文字列2.3) 議論2.4...

VueはPCカメラを呼び出して写真機能を実現します

この記事の例では、VueがPCカメラを呼び出して写真機能を実現する具体的なコードを参考までに共有して...

jsのイベントループ機構の解析

序文ご存知のとおり、JavaScript は本質的にシングルスレッドですが、ブラウザは非同期リクエス...

HTML埋め込みタグの使用方法と属性の詳細な説明

1. 基本的な文法コードをコピーコードは次のとおりです。埋め込み src=url注: 埋め込みはさま...

MySql のサブクエリ内のクエリ例の詳細な説明

北西を見ると私の故郷はどこにあるでしょうか。南東の満月を何度見たことがあるでしょうか。月が再びゆっく...

ReactのuseEffectクロージャの落とし穴についての簡単な説明

問題コードuseEffectによって発生したクロージャの問題コードを見てみましょう 定数 btn =...

Windows 上で Nginx+Tomcat クラスタを実装するプロセスの分析

導入: Nginx (エンジン エックスと同じ発音) は、BSD のようなプロトコルに基づいてリリー...

Tomcat でタイムアウトしたセッションを監視および削除する方法

序文偶然、30 分の Tomcat セッション時間は、セッションが作成された後、30 分間のみ有効で...

Windows 10 で MySQL の解凍バージョンをインストールする方法の詳細なグラフィック チュートリアル

MySQL のインストールは、インストール バージョンと解凍バージョンに分かれています。インストール...

Linux でテキストから改行文字を削除する方法

復帰文字 ( Ctrl+M ) に不安を感じても心配しないでください。それらを排除する簡単な方法がい...

Vueを使用して手書き署名機能を実装する

個人的な実装のスクリーンショット:インストール: npm インストール vue-esign --sa...

MySQLのデッドロックとログに関する詳細な説明

最近、MySQL オンラインでいくつかのデータ異常が発生しましたが、すべて早朝に発生しました。ビジネ...

WeChatアプレットの入力レベルとテキストエリアレベルの浸透率が高すぎる問題の解決策

WeChat ミニプログラムのネイティブ コンポーネントであるカメラ、キャンバス、入力 (フォーカス...

JS addEventListener() およびattachEvent() メソッドは登録イベントを実装します

JavaScript の DOM イベント モデルでは、オブジェクトの addEventListen...

RabbitMQ の Docker インストールと設定手順

目次単一マシンの展開オンラインプルミラーを見るRabbitMQを作成して実行するMQコンテナを正常に...