はじめに: 今週末は何もすることがないので、以前構築したB2C eコマースプラットフォームを思い出しました。 まだ完璧ではない部分があるので、それを改善することを考えました。問題は、電子商取引では、ショッピング プロセス全体でセッションからショッピング カート モデルを取得できるように、ショッピング カートをセッションに配置するシナリオがあります。特定の種類のショッピング カートでは、ショッピング カート内の購入数量が減りますが、ウィンドウを閉じた場合、セッション内のショッピング カート モデルの商品の数量をデータベースに追加するにはどうすればよいですか? GOOGLE と Baidu を使用した場合、最初に表示されたプロンプトは次のとおりでした。ウィンドウを自動的に閉じるセッションをクリアするため、最初に見つけた方法は、 タグの onunload 属性を使用して、次のような特定の JS を呼び出すことでした。 onunload="close()"> このメソッドは、ウィンドウが閉じられたときに close() イベントをトリガーするため、close() メソッドでセッションを削除するメソッドを定義できます。
しかし、これはそうではありません。このページを更新してこのページのリンクをクリックすると Onunload がトリガーされるため、もう一度 GOOGLE にアクセスして Baidu で検索すると、次のような答えが得られます:
< script>
window.onunload = function(){if(self.screenTop> 9000)alert('このウィンドウは閉じられています!')}
< script>
window.onunload = function(){if(self.screenLeft> 9000)alert(ウィンドウが閉じられました!.')}
説明:
window.screenTop
左上の y 座標を取得します画面の左上隅を基準としたブラウザ クライアント領域の隅
screenTop> 次の数値はディスプレイ解像度の高さより大きくなければなりません
たとえば、800*600、この数値は 600 より大きい必要があります。
window.screenLeft
画面の左上隅を基準としたブラウザ クライアント領域の左上隅の x 座標を取得します。
screenLeft> 次の数値は、ディスプレイ解像度の幅より大きい必要があります。
たとえば、800*600、この数値は 800 より大きい必要があります
通常、これら 2 つの値は 9000 に設定されます
そこで、上記の方法を使用して、onunload イベントがページが閉じられたときにトリガーされます。
概要:
① onunload 属性を使用する場合、Ajax を使用してセッションをクリアしたり、window.location.href を使用してリクエストをトリガーしたりできます。私はここでやっています struts2 を使用すると、 を使用できます。 closeWindow.action のリクエスト セッションでショッピング カート内のアイテムを処理し、その数量をデータベースに追加します。
② ここでもリクエストを処理するために Ajax を使用していますが、実際にはセッションを処理するだけで済みます。セッション情報の後に非同期リターンを処理する必要があるため、最終的な書き込みメソッドは次のとおりです。
onunload="javascript:if(self.screenTop>9000) window.location.href='${ pageContext.request.contextPath }/cart/closeWindow.action';"> ;