一部の拡張機能(Speed Tracerなど)と同様に、ページの読み込みにかかる時間をプログラムで決定したいと思います。たとえば、ネットワーク接続、DOMロードイベント、SSLネットワークタイミングなどの特定の重要なイベントがいつトリガーされるかを知りたいです。
Chrome for Androidでは拡張機能がサポートされていないため、コードで拡張機能を実行する方法はありますか?
一部の拡張機能(Speed Tracerなど)と同様に、ページの読み込みにかかる時間をプログラムで決定したいと思います。たとえば、ネットワーク接続、DOMロードイベント、SSLネットワークタイミングなどの特定の重要なイベントがいつトリガーされるかを知りたいです。
Chrome for Androidでは拡張機能がサポートされていないため、コードで拡張機能を実行する方法はありますか?
Chrome for Android(およびデスクトップChrome、Internet Explorer、Firefox)で利用できる「 NavigationTimingAPI」と呼ばれるものがあります。
Androidデバイスをコンピューターに接続し、このドキュメントで説明されている手順に従って「リモートデバッグモード」を有効にします。
コンピューターでChromeを開き、localhost:9222にアクセスして、Android用ChromeのDevToolsにアクセスします。
Consoleで、次のように入力します。
> performance.timing
このようなものが見つかります(折りたたむと折りたたまれます)
connectEnd: 1364275296017
connectStart: 1364275296017
domComplete: 1364275296699
domContentLoadedEventEnd: 1364275296517
domContentLoadedEventStart: 1364275296458
domInteractive: 1364275296458
domLoading: 1364275296304
domainLookupEnd: 1364275296017
domainLookupStart: 1364275296017
fetchStart: 1364275296017
loadEventEnd: 1364275296705
loadEventStart: 1364275296700
navigationStart: 1364275295553
redirectEnd: 1364275296017
redirectStart: 1364275295553
requestStart: 1364275296025
responseEnd: 1364275296273
responseStart: 1364275296264
secureConnectionStart: 0
unloadEventEnd: 1364275296275
unloadEventStart: 1364275296275
ナビゲーションタイミングAPIの詳細については、HTML5Rocksの記事「ナビゲーションタイミングを使用したページ読み込み速度の測定」を参照してください。
独自のWebViewにロードする場合は、次のようなものを使用できます。
mWebView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
long doneTime = System.getCurrentTimeInMillis();
int timeToLoad = doneTime - startTime;
}
});
long startTime = System.getCurrentTimeInMillis();
mWebView.loadUrl(yourUrl);
ChromeまたはFirefoxアプリで測定することを特に検討している場合、ストップウォッチなどを使用して手作業で測定する以外に、現時点で実際の解決策はないと思います。うまくいけば、私は間違っています。