JavaScriptを使用して「タッチスクリーン」デバイスを検出するための最良の方法は何ですか?

437
screenm0nkey 2011-01-28 03:39.

デスクトップデバイスとモバイルデバイスの両方で使用するjQueryプラグインを作成しました。デバイスにタッチスクリーン機能があるかどうかをJavaScriptで検出する方法があるかどうか疑問に思いました。jquery-mobile.jsを使用してタッチスクリーンイベントを検出し、iOS、Androidなどで機能しますが、ユーザーのデバイスにタッチスクリーンがあるかどうかに基づいて条件ステートメントも記述したいと思います。

それは可能ですか?

30 answers

140
Alan Christopher Thomas 2011-01-28 08:03.

更新:機能検出ライブラリ全体をプロジェクトに取り込む前に、以下のblmstrの回答をお読みください。実際のタッチサポートの検出はより複雑であり、Modernizrは基本的なユースケースのみをカバーしています。

Modernizrは、あらゆるサイトであらゆる種類の機能検出を行うための優れた軽量の方法です。

各機能のhtml要素にクラスを追加するだけです。

その後、CSSとJSでこれらの機能を簡単にターゲットにできます。例えば:

html.touch div {
    width: 480px;
}

html.no-touch div {
    width: auto;
}

そしてJavascript(jQueryの例):

$('html.touch #popup').hide();
718
bolmaster2 2011-01-28 07:46.

この機能を使ってみましたか?(これは、以前使用されていたModernizrと同じです。)

function is_touch_device() {  
  try {  
    document.createEvent("TouchEvent");  
    return true;  
  } catch (e) {  
    return false;  
  }  
}

console.log(is_touch_device());

更新1

document.createEvent("TouchEvent")true最新のクローム(v.17)で戻ってきました。Modernizrはこれを少し前に更新しました。ここでModernizrテストをチェックしてください。

このように関数を更新して、機能させます。

function is_touch_device1() {
  return 'ontouchstart' in window;
}

console.log(is_touch_device1());

更新2

上記はIE10では機能しないことがわかりました(MSSurfaceでfalseを返します)。修正は次のとおりです。

function is_touch_device2() {
  return 'ontouchstart' in window        // works on most browsers 
  || 'onmsgesturechange' in window;  // works on IE10 with some false positives
};

console.log(is_touch_device2());

更新3

'onmsgesturechange' in window一部のIEデスクトップバージョンではtrueが返されるため、信頼性が低くなります。これは少し確実に機能します。

function is_touch_device3() {
  return !!('ontouchstart' in window        // works on most browsers 
  || navigator.maxTouchPoints);       // works on IE10/11 and Surface
};

console.log(is_touch_device3());

2018年の更新

時が経ち、これをテストするための新しくてより良い方法があります。私は基本的に、Modernizrのチェック方法を抽出して簡略化しました。

function is_touch_device4() {
    if ("ontouchstart" in window || window.TouchEvent)
        return true;

    if (window.DocumentTouch && document instanceof DocumentTouch)
        return true;

    const prefixes = ["", "-webkit-", "-moz-", "-o-", "-ms-"];
    const queries = prefixes.map(prefix => `(${prefix}touch-enabled)`);

    return window.matchMedia(queries.join(",")).matches;
}


console.log(is_touch_device4());

ここでは、非標準のtouch-enabledメディアクエリ機能を使用していますが、これはちょっと奇妙で悪い習慣だと思います。しかしねえ、現実の世界ではそれはうまくいくと思います。将来(すべてでサポートされる場合)、これらのメディアクエリ機能で同じ結果が得られる可能性があります:pointerおよびhover

Modernizrがどのようにそれを行っているかのソースをチェックしてください。

タッチ検出の問題を説明する優れた記事については、Stu Cox:タッチスクリーンを検出できませんを参照してください。

123
Matt Stow 2012-11-21 00:10.

ModernizrはWindowsPhone 8 / WinRTでIE10を検出しないため、単純なクロスブラウザーソリューションは次のとおりです。

var supportsTouch = 'ontouchstart' in window || navigator.msMaxTouchPoints;

デバイスが突然タッチをサポートしたりサポートしなくなったりするため、一度チェックするだけで済みます。変数に保存するだけで、複数回より効率的に使用できます。

48
Blackbam 2018-10-18 02:39.

インタラクションメディア機能の導入以来、あなたは簡単に行うことができます:

if(window.matchMedia("(pointer: coarse)").matches) {
    // touchscreen
}

https://www.w3.org/TR/mediaqueries-4/#descdef-media-any-pointer

更新(コメントによる):上記の解決策は、「粗いポインター」(通常はタッチスクリーン)が主要な入力デバイスであるかどうかを検出することです。マウスなどのデバイスにタッチスクリーンもあるかどうかを判断したい場合は、any-pointer: coarse代わりに使用できます。

詳細については、こちらをご覧ください:ブラウザにマウスがなく、タッチのみであることの検出

39
David 2013-03-16 08:36.

上記のすべてのコメントを使用して、自分のニーズに合った次のコードをまとめました。

var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0));

私はこれをiPad、Android(ブラウザとChrome)、Blackberry Playbook、iPhone 4s、Windows Phone 8、IE 10、IE 8、IE 10(Windows 8 with Touchscreen)、Opera、Chrome、Firefoxでテストしました。

現在、Windows Phone 7で失敗し、そのブラウザーの解決策をまだ見つけることができません。

誰かがこれが役に立つと思うことを願っています。

20
Benny Neugebauer 2012-03-22 02:19.

私はこれが好きです:

function isTouchDevice(){
    return typeof window.ontouchstart !== 'undefined';
}

alert(isTouchDevice());
17
Peter-Pan 2013-06-27 06:18.

Modernizrを使用する場合はModernizr.touch、前述のように非常に簡単に使用できます。

ただし、Modernizr.touch安全のために、とユーザーエージェントテストを組み合わせて使用​​することをお勧めします。

var deviceAgent = navigator.userAgent.toLowerCase();

var isTouchDevice = Modernizr.touch || 
(deviceAgent.match(/(iphone|ipod|ipad)/) ||
deviceAgent.match(/(android)/)  || 
deviceAgent.match(/(iemobile)/) || 
deviceAgent.match(/iphone/i) || 
deviceAgent.match(/ipad/i) || 
deviceAgent.match(/ipod/i) || 
deviceAgent.match(/blackberry/i) || 
deviceAgent.match(/bada/i));

if (isTouchDevice) {
        //Do something touchy
    } else {
        //Can't touch this
    }

Modernizrを使用しない場合は、Modernizr.touch上記の関数を次のように置き換えるだけです。('ontouchstart' in document.documentElement)

また、ユーザーエージェントをテストするiemobileと、よりも広範囲のMicrosoftモバイルデバイスが検出されることに注意してくださいWindows Phone

このSOの質問も参照してください

14
Martin Lantzsch 2014-07-04 21:02.

modernizrの実装を試しましたが、タッチイベントの検出に一貫性がなくなりました(IE 10ではWindowsデスクトップにタッチイベントがあり、IE 11はタッチイベントを削除してポインターAPIを追加したため、機能します)。

そのため、ユーザーの入力タイプがわからない限り、Webサイトをタッチサイトとして最適化することにしました。これは、他のどのソリューションよりも信頼性があります。

私たちの調査によると、ほとんどのデスクトップユーザーは、クリックする前にマウスを画面上に移動するため、ユーザーが何かをクリックしたりホバーしたりする前に、ユーザーを検出して動作を変更できます。

これは、コードの簡略版です。

var isTouch = true;
window.addEventListener('mousemove', function mouseMoveDetector() {
    isTouch = false;
    window.removeEventListener('mousemove', mouseMoveDetector);
});
9
Ivan Castellanos 2015-06-29 15:33.

彼らがタッチスクリーンを持っているかどうかをチェックするよりも良いことがあります、彼らがそれを使用しているかどうかをチェックすることです、そしてそれはチェックするのが簡単です。

if (window.addEventListener) {
    var once = false;
    window.addEventListener('touchstart', function(){
        if (!once) {
            once = true;
            // Do what you need for touch-screens only
        }
    });
}
8
Aamir Shahzad 2014-09-22 20:20.

ワーキングフィドル

私はこのようにそれを達成しました。

function isTouchDevice(){
    return true == ("ontouchstart" in window || window.DocumentTouch && document instanceof DocumentTouch);
}

if(isTouchDevice()===true) {
    alert('Touch Device'); //your logic for touch device
}
else {
    alert('Not a Touch Device'); //your logic for non touch device
}
6
Sathiyamoorthy 2013-10-11 05:27.

これはWindowsSurfaceタブレットでもうまく機能します!!!

function detectTouchSupport {
msGesture = window.navigator && window.navigator.msPointerEnabled && window.MSGesture,
touchSupport = (( "ontouchstart" in window ) || msGesture || window.DocumentTouch &&     document instanceof DocumentTouch);
if(touchSupport) {
    $("html").addClass("ci_touch"); } else { $("html").addClass("ci_no_touch");
}
}
4
Loved 2012-01-13 10:58.

上記のコードの一部を使用してタッチかどうかを検出したため、fancyboxiframeはタッチではなくデスクトップコンピューターに表示されました。blmstrのコードを単独で使用した場合、Android4.0用のOperaMiniがまだ非タッチデバイスとして登録されていることに気付きました。(誰かが理由を知っていますか?)

私は最終的に以下を使用しました:

<script>
$(document).ready(function() {
    var ua = navigator.userAgent;
    function is_touch_device() { 
        try {  
            document.createEvent("TouchEvent");  
            return true;  
        } catch (e) {  
            return false;  
        }  
    }

    if ((is_touch_device()) || ua.match(/(iPhone|iPod|iPad)/) 
    || ua.match(/BlackBerry/) || ua.match(/Android/)) {
        // Touch browser
    } else {
        // Lightbox code
    }
});
</script>
4
coco puffs 2016-10-24 10:26.

タッチを検出しようとする際の最大の「落とし穴」は、タッチとトラックパッド/マウスの両方をサポートするハイブリッドデバイスです。ユーザーのデバイスがタッチをサポートしているかどうかを正しく検出できたとしても、実際に行う必要があるのは、ユーザーが現在使用している入力デバイスを検出することです。この課題の詳細な記述と可能な解決策がここにあります。

基本的に、ユーザーが画面に触れたばかりなのか、代わりにマウス/トラックパッドを使用したのかを判断する方法は、ページにイベントtouchstartmouseoverイベントの両方を登録することです。

document.addEventListener('touchstart', functionref, false) // on user tap, "touchstart" fires first
document.addEventListener('mouseover', functionref, false) // followed by mouse event, ie: "mouseover"

タッチアクションはこれらのイベントの両方をトリガーしますが、touchstartほとんどのデバイスでは前者()が常に最初になります。したがって、この予測可能な一連のイベントを利用して、can-touchクラスをドキュメントルートに動的に追加または削除して、現時点でのユーザーの現在の入力タイプをドキュメントに反映するメカニズムを作成できます。

;(function(){
    var isTouch = false //var to indicate current input type (is touch versus no touch) 
    var isTouchTimer 
    var curRootClass = '' //var indicating current document root class ("can-touch" or "")
     
    function addtouchclass(e){
        clearTimeout(isTouchTimer)
        isTouch = true
        if (curRootClass != 'can-touch'){ //add "can-touch' class if it's not already present
            curRootClass = 'can-touch'
            document.documentElement.classList.add(curRootClass)
        }
        isTouchTimer = setTimeout(function(){isTouch = false}, 500) //maintain "istouch" state for 500ms so removetouchclass doesn't get fired immediately following a touch event
    }
     
    function removetouchclass(e){
        if (!isTouch && curRootClass == 'can-touch'){ //remove 'can-touch' class if not triggered by a touch event and class is present
            isTouch = false
            curRootClass = ''
            document.documentElement.classList.remove('can-touch')
        }
    }
     
    document.addEventListener('touchstart', addtouchclass, false) //this event only gets called when input type is touch
    document.addEventListener('mouseover', removetouchclass, false) //this event gets called when input type is everything from touch to mouse/ trackpad
})();

詳細はこちら。

4
AmerllicA 2020-02-20 16:20.

実際、私はこの質問を調査し、すべての状況を検討しました。それは私のプロジェクトでも大きな問題だからです。だから私は以下の機能に到達します、それはすべてのデバイス上のすべてのブラウザのすべてのバージョンで動作します:

const isTouchDevice = () => {
  const prefixes = ['', '-webkit-', '-moz-', '-o-', '-ms-', ''];
  const mq = query => window.matchMedia(query).matches;

  if (
    'ontouchstart' in window ||
    (window.DocumentTouch && document instanceof DocumentTouch)
  ) {
    return true;
  }
  return mq(['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join(''));
};

ヒント:間違いなく、isTouchDeviceちょうどboolean値を返します。

3
Safran Ali 2011-12-23 12:42.

この投稿をチェックしてください。タッチデバイスが検出されたときに何をするか、またはtouchstartイベントが呼び出された場合に何をするかについての本当に素晴らしいコードスニペットを提供します。

$(function(){
  if(window.Touch) {
    touch_detect.auto_detected();
  } else {
    document.ontouchstart = touch_detect.surface;
  }
}); // End loaded jQuery
var touch_detect = {
  auto_detected: function(event){
    /* add everything you want to do onLoad here (eg. activating hover controls) */
    alert('this was auto detected');
    activateTouchArea();
  },
  surface: function(event){
    /* add everything you want to do ontouchstart here (eg. drag & drop) - you can fire this in both places */
    alert('this was detected by touching');
    activateTouchArea();
  }
}; // touch_detect
function activateTouchArea(){
  /* make sure our screen doesn't scroll when we move the "touchable area" */
  var element = document.getElementById('element_id');
  element.addEventListener("touchstart", touchStart, false);
}
function touchStart(event) {
  /* modularize preventing the default behavior so we can use it again */
  event.preventDefault();
}
3
hybrid 2012-12-16 15:47.

デバイスがタッチデバイスであるかどうかを判断するために画面幅を使用することは避けます。699pxよりもはるかに大きいタッチスクリーンがあります。Windows8を考えてみてください。Navigatior.userAgentは誤ったポジティブをオーバーライドするのに適しているかもしれません。

Modernizrでこの問題を確認することをお勧めします。

デバイスがタッチイベントをサポートしているか、タッチデバイスであるかをテストしますか?残念ながら、それは同じことではありません。

3
Dave Burt 2014-12-16 17:11.

いいえ、できません。与えられた優れた答えは部分的なものにすぎません。なぜなら、与えられた方法は偽陽性と偽陰性を生み出すからです。OS APIが原因で、ブラウザでさえタッチスクリーンが存在するかどうかを常に認識しているわけではなく、特にKVMタイプの配置では、ブラウザセッション中に事実が変わる可能性があります。

この優れた記事で詳細を参照してください。

http://www.stucox.com/blog/you-cant-detect-a-touchscreen/

この記事は、タッチスクリーンを検出したくなるような仮定を再考することを提案しています。おそらく間違っています。(私は自分のアプリをチェックしましたが、私の仮定は確かに間違っていました!)

記事の結論:

レイアウトについては、全員がタッチスクリーンを持っていると想定します。マウスユーザーは、タッチユーザーが小さなUIコントロールを使用するよりも、大きなUIコントロールをはるかに簡単に使用できます。ホバー状態についても同じことが言えます。

イベントやインタラクションについては、誰もがタッチスクリーンを持っている可能性があると想定してください。キーボード、マウス、タッチの相互作用を互いに並行して実装し、互いにブロックしないようにします。

3
seanforyou23 2014-10-08 11:28.

これらの多くは機能しますが、jQueryが必要であるか、javascriptリンターが構文について文句を言います。最初の質問がこれを解決するための「JavaScript」(jQueryではなくModernizrではない)方法を求めていることを考慮して、これは毎回機能する単純な関数です。それはまたあなたが得ることができるのと同じくらい最小限です。

function isTouchDevice() {
    return !!window.ontouchstart;
}

console.log(isTouchDevice());

最後に説明する利点の1つは、このコードがフレームワークやデバイスに依存しないことです。楽しい!

2
samuel segal 2011-11-03 10:05.
var isTouchScreen = 'createTouch' in document;

または

var isTouchScreen = 'createTouch' in document || screen.width <= 699 || 
    ua.match(/(iPhone|iPod|iPad)/) || ua.match(/BlackBerry/) || 
    ua.match(/Android/);

私が思うに、より徹底的なチェックになるでしょう。

2
wizmagister 2013-02-02 07:43.

Chrome 24は、おそらくWindows 8のタッチイベントをサポートするようになりました。そのため、ここに投稿されたコードは機能しなくなりました。タッチがブラウザでサポートされているかどうかを検出しようとする代わりに、タッチイベントとクリックイベントの両方をバインドし、一方だけが呼び出されるようにします。

myCustomBind = function(controlName, callback) {

  $(controlName).bind('touchend click', function(e) {
    e.stopPropagation();
    e.preventDefault();

    callback.call();
  });
};

そしてそれを呼び出す:

myCustomBind('#mnuRealtime', function () { ... });

お役に立てれば !

2
xicooc 2014-04-11 18:26.

常にデスクトップのためのFirefoxを除くサポートされるすべてのブラウザTRUE開発者のためのデスクトップサポート応答設計のためのためのFirefoxのも、あなたはかないタッチボタンをクリックしてください!

Mozillaが次のバージョンでこれを修正することを願っています。

Firefox28デスクトップを使用しています。

function isTouch()
{
    return !!("ontouchstart" in window) || !!(navigator.msMaxTouchPoints);
}
2
serge-k 2015-11-29 10:55.

jQuery v1.11.3

提供された回答には多くの良い情報があります。しかし、最近、私は2つのことを達成するために、実際にすべてを1つの実用的なソリューションに結び付けようと多くの時間を費やしました。

  1. 使用中のデバイスがタッチスクリーンタイプのデバイスであることを検出します。
  2. デバイスがタップされたことを検出します。

この投稿とJavascriptによるタッチスクリーンデバイスの検出に加えて、PatrickLaukeによるこの投稿は非常に役に立ちました。https://hacks.mozilla.org/2013/04/detecting-touch-its-the-why-not-the-how/

これがコードです...

$(document).ready(function() { //The page is "ready" and the document can be manipulated. if (('ontouchstart' in window) || (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)) { //If the device is a touch capable device, then... $(document).on("touchstart", "a", function() {

        //Do something on tap.

      });
    }
    else
    {
      null;
    }
});

重要!この*.on( events [, selector ] [, data ], handler )メソッドには、「touchstart」イベント、またはタッチに関連付けられた他の同様のイベントを処理できるセレクター(通常は要素)が必要です。この場合、それはハイパーリンク要素「a」です。

これで、JavaScriptで通常のマウスクリックを処理する必要がなくなりました。CSSを使用して、次のようにハイパーリンク「a」要素のセレクターを使用してこれらのイベントを処理できるためです。

/* unvisited link */
a:link 
{

}

/* visited link */
a:visited 
{

}

/* mouse over link */
a:hover 
{

}

/* selected link */
a:active 
{

}

注:他のセレクターもあります...

2
frosty 2017-06-17 22:49.

問題

タッチ入力とマウス入力の組み合わせを使用するハイブリッドデバイスのため、ユーザーがタッチユーザーである場合にコードを実行するかどうかを制御する状態/変数を動的に変更できる必要があります。

タッチデバイスもmousemoveタップで起動します。

解決

  1. ロード時にタッチが偽であると想定します。
  2. touchstartイベントが発生するまで待ってから、trueに設定します。
  3. touchstartが起動された場合は、mousemoveハンドラーを追加します。
  4. 2つのmousemoveイベントが発生するまでの時間が20ミリ秒未満の場合は、入力としてマウスを使用していると想定します。イベントは不要になり、mousemoveはマウスデバイスにとって高価なイベントであるため、削除します。
  5. touchstartが再度起動されると(ユーザーがtouchの使用に戻ると)、変数はtrueに戻ります。そして、このプロセスを繰り返して、動的に決定されるようにします。ある奇跡によって、mousemoveがタッチで2回、ばかばかしいほど速く発火した場合(私のテストでは、20ミリ秒以内にそれを行うことは事実上不可能です)、次のタッチスタートでtrueに戻ります。

SafariiOSおよびChromeforAndroidでテスト済み。

注:MS Surfaceなどのポインターイベントについては、100%確実ではありません。

Codepenデモ


const supportsTouch = 'ontouchstart' in window;
let isUsingTouch = false;

// `touchstart`, `pointerdown`
const touchHandler = () => {
  isUsingTouch = true;
  document.addEventListener('mousemove', mousemoveHandler);
};

// use a simple closure to store previous time as internal state
const mousemoveHandler = (() => {
  let time;
  
  return () => {
    const now = performance.now();

    if (now - time < 20) {
      isUsingTouch = false;
      document.removeEventListener('mousemove', mousemoveHandler);
    }

    time = now;
  }
})();

// add listeners
if (supportsTouch) {
  document.addEventListener('touchstart', touchHandler);
} else if (navigator.maxTouchPoints || navigator.msMaxTouchPoints) {
  document.addEventListener('pointerdown', touchHandler);
}
1
Mark 2012-03-20 04:11.

私が使う:

if(jQuery.support.touch){
    alert('Touch enabled');
}

jQuery mobile1.0.1で

1
Michael 2014-05-20 23:13.

また、ページがタッチスクリーンデバイスに表示されているかどうかをJavascriptで検出する方法について、さまざまなオプションに苦労しました。IMO、現在のところ、オプションを適切に検出するためのリアルオプションは存在しません。ブラウザは、デスクトップマシンでのタッチイベントを報告するか(OSがタッチ対応である可能性があるため)、一部のソリューションがすべてのモバイルデバイスで機能するとは限りません。

結局、私は最初から間違ったアプローチに従っていることに気づきました。私のページがタッチデバイスと非タッチデバイスで同じように見える場合、プロパティの検出についてまったく心配する必要はないかもしれません。私のシナリオはタッチデバイスのボタンのツールチップを非アクティブ化するには、ボタンをアクティブ化するためにシングルタップが必要な場所でダブルタップが発生します。

私の解決策は、ボタンの上にツールチップが不要になるようにビューをリファクタリングすることでした。最終的には、すべてに欠点があるメソッドを使用してJavascriptからタッチデバイスを検出する必要がありませんでした。

1
Endjeechner 2014-05-21 22:37.

モダナイザーをインストールして、簡単なタッチイベントを使用できます。これは非常に効果的で、Windowsサーフェスを含め、テストしたすべてのデバイスで機能します。

jsFiddleを作成しました

function isTouchDevice(){
    if(Modernizr.hasEvent('touchstart') || navigator.userAgent.search(/Touch/i) != -1){
         alert("is touch");
            return true;
         }else{
            alert("is not touch");
            return false;
    }
}
1
prograhammer 2015-07-10 09:06.

実用的な答えは、コンテキストを考慮したもののようです。

1)パブリックサイト(ログインなし)
両方のオプションを一緒に使用するようにUIをコーディングします。

2)ログインサイト
ログインフォームでマウス移動が発生したかどうかをキャプチャし、これを非表示の入力に保存します。値はログイン資格情報とともに渡され、ユーザーのセッションに追加されるため、セッションの期間中使用できます。

ログインページにのみ追加するJquery:

$('#istouch').val(1); // <-- value will be submitted with login form if (window.addEventListener) { window.addEventListener('mousemove', function mouseMoveListener(){ // Update hidden input value to false, and stop listening $('#istouch').val(0); 
        window.removeEventListener('mousemove', mouseMoveListener);
    });
} 

(@Dave Burtに+ 1、@ Martin Lantzschに+1)

1
Farhad Sakhaei 2019-05-29 02:34.

最善の方法は次のとおりです。

var isTouchDevice =
    (('ontouchstart' in window) ||
    (navigator.maxTouchPoints > 0) ||
    (navigator.msMaxTouchPoints > 0));
if(!isTouchDevice){
    /* Code for touch device /*
}else{
    /* Code for non touch device */
}
0
vsync 2014-02-20 06:50.

エクステントjQuerysupportオブジェクト:

jQuery.support.touch = 'ontouchend' in document;

そして今、あなたはこのようにどこでもそれをチェックすることができます:

if( jQuery.support.touch )
   // do touch stuff
0
Lewis James-Odwin 2015-12-07 10:45.

これは今のところ私にとってはうまく機能しているようです:

//Checks if a touch screen
is_touch_screen = 'ontouchstart' in document.documentElement;

if (is_touch_screen) {
  // Do something if a touch screen
}
else {
  // Not a touch screen (i.e. desktop)
}

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

この太陽に優しいショルダーバッグで一日中外出してください

この太陽に優しいショルダーバッグで一日中外出してください

画像クレジット:Richard Mackney / Flickrトラベリングライトは必需品だけを運ぶことを意味するかもしれませんが、デバイスを補充する方法がない外出先では、接続を維持するのが難しくなる可能性があります。それはあなたがすべての生き物の快適さやクールなガジェットを捨てる必要があるという意味ではありません、ただあなたがいくつかのより小さなものを手に入れる必要があるということです、そしておそらくあなた自身をジュースに保つためにいくつかの、例えば非正統的な充電装置を使うでしょう。

ミッドセンチュリーリゾートのポストカードが廃墟に変わるのを見る

ミッドセンチュリーリゾートのポストカードが廃墟に変わるのを見る

ニューヨーク州スプリンググレンにある放棄されたホモワックロッジのボーリング場。キャッツキル南部のこの地域は、ニューヨーク市からのユダヤ人の行楽客に人気があることから、かつてはボルシチベルトとして知られていました。

ブルックリンスレートの美しいボードをあなたのテーブルに座らせましょう

ブルックリンスレートの美しいボードをあなたのテーブルに座らせましょう

ブルックリンスレートブルックリンスレートのマグカップとコースターの賞賛をすでに歌っており、それらの食器製品も同様に堅実です。ブルックリンスレートは、さまざまなサイズとテクスチャのスレートの完全な採石場を販売しています。一部のオプションは赤でも利用できます。上で見ることができるように、彼らは同様にカスタマイズをします。

遺伝子分析により、私たちの体内に生息する微生物の99%がカタログ化されていないことが明らかになりました

遺伝子分析により、私たちの体内に生息する微生物の99%がカタログ化されていないことが明らかになりました

画像:Juan Gaertner / Shutterstock私たちの体の内部は、私たちの細胞とは何の関係もない何十億もの微生物が住んでいる本物の生態系です。これがまだ少し気になることではなかったかのように、これらの微生物の99%が研究されたことがないことがわかりました。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

投資ノート:Bioscout AU$300万シード

投資ノート:Bioscout AU$300万シード

Bioscoutは、農家を運転席に置くという使命を負っています。Artesian(GrainInnovate)やUniseedと並んで、最新のシードラウンドでチームを支援できることをうれしく思います。問題真菌症による重大な作物の損失は、農民にとって試練であることが証明されています。

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

遠隔医療は、パンデミック後の時代では新しいものではなく、時代遅れの分野でもありません。しかし、業界を詳しく見ると、需要と供給の強力な持続可能性と、米国で絶え間ない革命となる強力な潜在的成長曲線を示しています。

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

2021年は、世界的なベンチャーキャピタル(VC)の資金調達にとって記録的な年でした。DealStreetAsiaによると、東南アジアも例外ではなく、この地域では年間で記録的な25の新しいユニコーンが採掘されました。

ムーアの法則を超えて

ムーアの法則を超えて

計算に対する私たちの欲求とムーアの法則が提供できるものとの間には、指数関数的に増大するギャップがあります。私たちの文明は計算に基づいています—建築と想像力の現在の限界を超える技術を見つけなければなりません。

Language