html5のAPIをご存知ですか?

伊谢尔伦
伊谢尔伦オリジナル
2016-12-03 11:28:061669ブラウズ

以下は、これまでに学習したいくつかの HTML5 API の概要です。HTML5 には、理解して学習する価値のある関数とインターフェイスが数多くあります。

ページ可視性 API -- ページ可視性

全画面 API -- 全画面

Get MediaAPI -- getUserMedia

バッテリー API -- バッテリー

リソースのプリロード API -- リンクのプリフェッチ

ページ可視性 API

この APIユーザーに対するページの可視性を検出するために使用できます。つまり、ユーザーが現在閲覧しているページまたはタブのステータス変化を返します。 これは、ブラウザーが最小化され、タップ ページが切り替わったときに有効になります (アプリ内で複数の Web ビューを切り替える必要がある場合は、pageVisibility インターフェイスを使用して、対応するイベントを監視および処理できます)。

【document.hidden】 この値はページが表示されるかどうかを示します。値はブール値です。

[document.visibilityState] この Visibilitystate には 3 つの可能な値があります:

[visible] ページがフロントページであることを示します。最小化された状態ではありません ウィンドウ

【非表示】は、ページがフロントページではないか、最小化されたウィンドウ内にあることを示します

【プリレンダリング】は、ページのコンテンツが再レンダリングされており、ページが非表示であることを示しますユーザーへ

【isibilitychange Event 】*ウィンドウの可視性変更イベントをリッスンする

関連コード:

// 设置隐藏属性和可见改变事件的名称,属性需要加浏览器前缀  // since some browsers only offer vendor-prefixed support  var hidden, state, visibilityChange;  if (typeof document.hidden !== "undefined") {  
  hidden = "hidden";  
  visibilityChange = "visibilitychange";  
  state = "visibilityState";  
} else if (typeof document.mozHidden !== "undefined") {  
  hidden = "mozHidden";  
  visibilityChange = "mozvisibilitychange";  
  state = "mozVisibilityState";  
} else if (typeof document.msHidden !== "undefined") {  
  hidden = "msHidden";  
  visibilityChange = "msvisibilitychange";  
  state = "msVisibilityState";  
} else if (typeof document.webkitHidden !== "undefined") {  
  hidden = "webkitHidden";  
  visibilityChange = "webkitvisibilitychange";  
  state = "webkitVisibilityState";  
} // 添加一个标题改变的监听器  document.addEventListener(visibilityChange, function(e) { // 开始或停止状态处理  }, false);

ページの可視性の使用

可視性が変化したときにどのように使用し、何を行うことができますか。

コンテンツを定期的に更新するページを制御できます。ページが表示されていない場合は更新されず、表示されている場合は更新されます。

それに応じて、オーディオとビデオの再生を一時停止したり継続したりすることもできます。ページが表示されているかどうかを確認することもできます。ページの可視性に基づいて、単にページを開いてこのページに滞在しなかったのではなく、Web サイトの何人のユーザーがこのページに滞在したかについてのより正確なデータを計算することもできます。

フル スクリーン API フル スクリーン API

この API を使用すると、開発者はプログラムによって Web アプリケーションを全画面で実行でき、Web アプリケーションをネイティブ アプリケーションに近づけることができます。非常にシンプルで便利な API。

フル スクリーンの概要

フル スクリーン API は使い方が非常に簡単で、2 つのモードがあります

フルスクリーン モードの起動 フル スクリーン モードを起動します

// 找到适合浏览器的全屏方法  function launchFullScreen(element) {  if(element.requestFullScreen) {  
    element.requestFullScreen();  
  } else if(element.mozRequestFullScreen) {  
    element.mozRequestFullScreen();  
  } else if(element.webkitRequestFullScreen) {  
    element.webkitRequestFullScreen();  
  }  
} // 启动全屏模式  launchFullScreen(document.documentElement); // the whole page  launchFullScreen(document.getElementById("videoElement")); // any individual element

フルスクリーン モードの終了 フル スクリーン モードを終了します

// Whack fullscreenfunction exitFullscreen() { if(document.exitFullscreen) { document.exitFullscreen();
  } else if(document.mozCancelFullScreen) { document.mozCancelFullScreen();
  } else if(document.webkitExitFullscreen) { document.webkitExitFullscreen();
  }
} // Cancel fullscreen for browsers that support it! exitFullscreen();

フル スクリーン関連するプロパティとイベント

現在、全画面表示には依然として互換性の問題があり、使用できる多くのブラウザでは、対応するプロパティとイベントに関連するプレフィックスを追加する必要があります。

【document.fullScreenElement】フルスクリーンで開始する要素(動画など)を示す属性です

【document.fullScreenEnabled】現在フルスクリーンかどうかを示す属性です

【fullscreenchangeイベント】フルスクリーンのイベントをリッスンしますステータス変更

2.2 フルスクリーン関連

css フルスクリーンのCSSプロパティの概要がいくつかあります

:-webkit-full-screen,
:-moz-full-screen,
:-ms-fullscreen,
:full-screen {
    /*pre-spec */
   /* properties */
}
:fullscreen { 
    /* spec */
   /* properties */
}
/* deeper elements */:-webkit-full-screen video {
   width: 100%;
   height: 100%;
}
/* styling the backdrop*/::backdrop {
  /* properties */
}
::-ms-backdrop {
  /* properties */
}

フルスクリーン

このAPIを初めて見たのは、いくつかの携帯小説や携帯コミックのサイトを読んでいたときでした。全画面表示の機能があります。フルスクリーン API には現在互換性の問題があるかもしれませんが、近い将来、間違いなくよく使用される API になると信じています

getUserMedia API

この API を使用すると、Web アプリケーションはプラグインを使用せずにカメラとマイクにアクセスできます。 API はクライアントで最初にサポートされていますが、PC ではまだ利用できません。

getUserMedia APIの概要

まず次のhtml

<!--
    正常正确情况下,使用video等元素,我们是需要在确认客户端是支持该元素时才
    回相应地用js创建这些元素,但通过使用getUserMedia api,
    我们即可在html中直接创建这些元素(而不需要用js来创建),
--> <video id="video" width="640" height="480" autoplay></video> <button id="snap">Snap Photo</button> <canvas id="canvas" width="640" height="480"></canvas>

関連のJSコードを読んでください

// 设置事件监听器  window.addEventListener("DOMContentLoaded", function() { // 获取元素  var canvas = document.getElementById("canvas"),  
    context = canvas.getContext("2d"),  
    video = document.getElementById("video"),  
    videoObj = { "video": true },  
    errBack = function(error) { console.log("Video capture error: ", error.code);   
    }; // 设置video监听器  if(navigator.getUserMedia) { // Standard  navigator.getUserMedia(videoObj, function(stream) {  
      video.src = stream;  
      video.play();  
    }, errBack);  
  } else if(navigator.webkitGetUserMedia) { // WebKit-prefixed  navigator.webkitGetUserMedia(videoObj, function(stream){  
      video.src = window.webkitURL.createObjectURL(stream);  
      video.play();  
    }, errBack);  
  }  
}, false);

一旦确定当前浏览器是支持getUserMedia的时, 我们可以同简单的方法将当前我们的video元素的src视频地址赋值给用户手机本地的video,然后通过video的play方法拉起本地video的启动和连接。这样的话我们就可以使用本地的播放器来播放。

电池API(Battery API)

这是一个针对移动设备应用程序的API,主要用于检测设备电池信息。

Battery API 的介绍

var battery = navigator.battery || navigator.webkitBattery || navigator.mozBattery; // 电池属性  console.warn("Battery charging: ", battery.charging); 
// 当前电池是否在充电 true  console.warn("Battery level: ", battery.level); 
// 0.58  console.warn("Battery discharging time: ", battery.dischargingTime); 
// 添加事件监听器  battery.addEventListener("chargingchange", function(e) { console.warn("Battery charge change: ", battery.charging);  
}, false);

为什么获取电池信息的api

为什么我们需要用到battery api?现在许多移动端apps都内嵌着web浏览器包装的(不再是完全native的应用)。所以我们需要一个方法去获取系统的信息,app有一些过程是`十分耗电的,然后我们就需要在用户启动时给用户一些警告信息告诉用户当前设备电量较低。这是一个十分重要简单的api.相应在不久的将来会发挥应有的作用。

Link Prefetching【预加载】

Link Prefetching【预加载】

预加载网页内容为浏览者提供一个平滑的浏览体验。这个api我们在业务偶尔也会使用到

什么是link预加载

Link prefetching 是利用浏览器最佳的时间去下载或者预加载一些用户可能将会在不久将来浏览的文档的一种浏览器机制。

<!-- full page --> <link rel="prefetch" href="http://davidwalsh.name/css-enhancements-user-experience" /> 
<!-- just an image --> <link rel="prefetch" href="http://davidwalsh.name/wp-content/themes/walshbook3/images/sprite.png" />

什么时候使用link预加载是否在自己的网站使用预加载,可以参考一下几点:

当你做的是一种类似slideshow的网页,需要提前加载近1-3张页面(假设这些页面并不大)

预先加载在网站中许多网页都会用到的图片

预先加载网站搜索的结果的页面

参考链接 http://davidwalsh.name/

    

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。