pjax とは何ですか?
現在、多くの Web サイト (Facebook、twitter) がこのような閲覧方法をサポートしています。サイト内のリンクをクリックすると、そのページにジャンプするのではなく、サイト内のページが更新されるだけです。 この種のユーザー エクスペリエンスは、ページ全体をフラッシュするよりもはるかに優れています。
これらの Web サイトの Ajax 更新では、ページを更新すると、ブラウザのアドレス フィールドに戻ることもできます。前のページ。
では、そのような機能を実装したい場合は、どうすればよいでしょうか?
pjax がそのような機能をサポートするスクリプトを提供していることがわかりました。
pjax プロジェクトのアドレスは https://github.com/defunkt/jquery-pjax です。 実際の効果については、 http://pjax.heroku.com/ を参照してください。 pjax がチェックされていない場合、リンクをクリックするとジャンプします。 確認後、リンクは ajax 更新されます。
なぜ pjax を使用するのですか?
pjax にはいくつかの利点があります:
ユーザー エクスペリエンスの向上。ページがジャンプするとき、人間の目はページ全体を再識別する必要があります。ページの一部を更新する場合、再識別する必要があるのは 1 つの領域だけです。私は自分の Web サイトで pjax テクノロジーを使用しているため、ページジャンプしかない他の Web サイトにアクセスする方がはるかに不快だと感じずにはいられません。 同時に、一部のページを更新するときに読み込みプロンプトが表示され、更新時に古いページがブラウザに引き続き表示されるため、ユーザーはページの読み込み時間が長くなっても許容できます。
帯域幅の消費とサーバーの消費を大幅に削減します。ページの一部のみが更新されるため、ほとんどのリクエスト (css/js) は再取得されず、ユーザーのログイン情報が含まれる Web サイトの外枠部分を再生成する必要はありません。 この部分の消費量を具体的に計算したことはありませんが、リクエストの少なくとも 40%、サーバー消費量の 30% 以上が節約されたと推定します。
デメリットもあると思います:
IE6 などの歴史的なブラウザのサポートを実際にテストしたことはありませんが、pjax は新しい標準を利用しているため、古いブラウザとの互換性に問題が発生します。 ただし、pjax 自体はフォールバックをサポートしており、ブラウザがこの機能をサポートしていないことが判明した場合は、元のページに戻ります。
複雑なサーバー側のサポート サーバー側では、受信したリクエストに基づいて、ページ全体のレンダリングを実行するか、部分的なページのレンダリングを実行するかを決定する必要があります。 ただし、適切に設計されたサーバー コードの場合、そのような機能のサポートは大きな問題にはなりません。
総合すると、ユーザーエクスペリエンスとリソース利用率の向上により、デメリットは完全に補うことができます。ぜひ皆さんにも使ってみることをお勧めします。
pjax の使い方
公式ドキュメントを見てください。
技術者は直接の技術情報を読む習慣を身につけるべきだと思います。
直接使用できる pjax 用の Rails gem プラグインがあります。 ジャンゴのサポートもあります。
pjax の原理
この問題に対処できるようにするには、pjax がどのように機能するかを理解できる必要があります。 pjax コードには 1 つのファイルしかありません: https://github.com/defunkt/jquery-pjax/blob/master/jquery.pjax.js
能力がある場合は、自分で見てみることができます。 ここでその原理を説明しましょう。
まず、HTML で pjax する必要があるリンク コンテンツと、クリック後に更新する必要がある部分を指定します (data-pjax 属性に入れます):
$('a[data-pjax]').pjax()
pjax スクリプトがロードされると、リンクされたイベントは、ajax リクエストにラップされてサーバーに送信されます。
$.fn.pjax = function( container, options ) { return this.live('click.pjax', function(event){ handleClick(event, container, options) }) } function handleClick(event, container, options) { $.pjax($.extend({}, defaults, options)) ... event.preventDefault() } var pjax = $.pjax = function( options ) { ... pjax.xhr = $.ajax(options) }
このリクエストには X-PJAX の HEADER ロゴが含まれています。サーバーはそのようなリクエストを受信すると、ページの一部をレンダリングして返すだけでよいことを認識します。
xhr.setRequestHeader('X-PJAX', 'true') xhr.setRequestHeader('X-PJAX-Container', context.selector)
pjax は返されたリクエストを受信した後、data-pjax で指定された領域を更新し、ブラウザのアドレスも更新します。
options.success = function(data, status, xhr) { var container = extractContainer(data, xhr, options) ... if (container.title) document.title = container.title context.html(container.contents) }
ブラウザの後退をサポートするために、履歴 API を使用して対応する情報を記録します。
pjax.state = { id: options.id || uniqueId(), url: container.url, container: context.selector, fragment: options.fragment, timeout: options.timeout } if (options.push || options.replace) { window.history.replaceState(pjax.state, container.title, container.url) }
ブラウザが後退すると、イベントをインターセプトし、記録された履歴情報に基づいて新しい ajax リクエストを生成します。
$(window).bind('popstate', function(event){ var state = event.state if (state && state.container) { var container = $(state.container) if (container.length) { ... var options = { id: state.id, url: state.url, container: container, push: false, fragment: state.fragment, timeout: state.timeout, scrollTo: false } if (contents) { // pjax event is deprecated $(document).trigger('pjax', [null, options]) container.trigger('pjax:start', [null, options]) // end.pjax event is deprecated container.trigger('start.pjax', [null, options]) container.html(contents) pjax.state = state container.trigger('pjax:end', [null, options]) // end.pjax event is deprecated container.trigger('end.pjax', [null, options]) } else { $.pjax(options) } ... } } }
フォールバックをサポートするために、1 つは読み込み時にブラウザが履歴プッシュステート API をサポートしているかどうかを判断することです:
// Is pjax supported by this browser? $.support.pjax = window.history && window.history.pushState && window.history.replaceState // pushState isn't reliable on iOS until 5. && !navigator.userAgent.match(/((iPod|iPhone|iPad).+\bOS\s+[1-4]|WebApps\/.+CFNetwork)/)
もう 1 つは、リクエストに対する応答がないことが判明した場合にページに直接ジャンプすることです。期間 (パラメーターのタイムアウトを設定できます)。
options.beforeSend = function(xhr, settings) { if (settings.timeout > 0) { timeoutTimer = setTimeout(function() { if (fire('pjax:timeout', [xhr, options])) xhr.abort('timeout') }, settings.timeout) // Clear timeout setting so jquerys internal timeout isn't invoked settings.timeout = 0
結論
ここまで見たところで、実際に pjax を使ってみませんか? 非常に多くの利点があるため、ほとんどすべての Web サイトで pjax を使用する必要があると思います。 今すぐ使ってください!

如何使用JS和百度地图实现地图平移功能百度地图是一款广泛使用的地图服务平台,在Web开发中经常用于展示地理信息、定位等功能。本文将介绍如何使用JS和百度地图API实现地图平移功能,并提供具体的代码示例。一、准备工作使用百度地图API前,首先需要在百度地图开放平台(http://lbsyun.baidu.com/)上申请一个开发者账号,并创建一个应用。创建完成

js字符串转数组的方法:1、使用“split()”方法,可以根据指定的分隔符将字符串分割成数组元素;2、使用“Array.from()”方法,可以将可迭代对象或类数组对象转换成真正的数组;3、使用for循环遍历,将每个字符依次添加到数组中;4、使用“Array.split()”方法,通过调用“Array.prototype.forEach()”将一个字符串拆分成数组的快捷方式。

如何使用JS和百度地图实现地图热力图功能简介:随着互联网和移动设备的迅速发展,地图成为了一种普遍的应用场景。而热力图作为一种可视化的展示方式,能够帮助我们更直观地了解数据的分布情况。本文将介绍如何使用JS和百度地图API来实现地图热力图的功能,并提供具体的代码示例。准备工作:在开始之前,你需要准备以下事项:一个百度开发者账号,并创建一个应用,获取到相应的AP

js中new操作符做了:1、创建一个空对象,这个新对象将成为函数的实例;2、将新对象的原型链接到构造函数的原型对象,这样新对象就可以访问构造函数原型对象中定义的属性和方法;3、将构造函数的作用域赋给新对象,这样新对象就可以通过this关键字来引用构造函数中的属性和方法;4、执行构造函数中的代码,构造函数中的代码将用于初始化新对象的属性和方法;5、如果构造函数中没有返回等等。

这篇文章主要为大家详细介绍了js实现打字小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

php在特定情况下可以读js内部的数组。其方法是:1、在JavaScript中,创建一个包含需要传递给PHP的数组的变量;2、使用Ajax技术将该数组发送给PHP脚本。可以使用原生的JavaScript代码或者使用基于Ajax的JavaScript库如jQuery等;3、在PHP脚本中,接收传递过来的数组数据,并进行相应的处理即可。

js全称JavaScript,是一种具有函数优先的轻量级,直译式、解释型或即时编译型的高级编程语言,是一种属于网络的高级脚本语言;JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式,如函数式编程。

js原生选择器有getElementById()、getElementsByClassName()、getElementsByTagName()、querySelector()和querySelectorAll()等。详细介绍:1、getElementById()通过元素的唯一标识符来选择元素,它返回具有指定ID的元素作为结果等等。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Dreamweaver Mac版
ビジュアル Web 開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
