Полная путаница по поводу Ubuntu!

Вы пытались использовать эту функцию? (Это то же самое, что использовал Modernizr.)

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

ОБНОВЛЕНИЕ 1

document.createEvent("TouchEvent") начали возвращать true в последнем хроме ( ст. 17). Modernizr обновил это некоторое время назад. Проверьте тест Модернизра здесь .

Обновите вашу функцию так, чтобы она работала:

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

ОБНОВЛЕНИЕ 2

Я обнаружил, что вышеупомянутое не работает на IE10 (возвращает false на поверхности MS). Вот исправление:

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

ОБНОВЛЕНИЕ 3

'onmsgesturechange' in window вернет true в некоторых версиях IE для настольных ПК, так что это ненадежно. Это работает несколько надежнее:

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

ОБНОВЛЕНИЕ 2018

Время идет, и есть новые и лучшие способы проверить это. Я в основном извлек и упростил способ проверки Modernizr'а:

function is_touch_device() {
  var prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');
  var mq = function(query) {
    return window.matchMedia(query).matches;
  }

  if (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
    return true;
  }

  // include the 'heartz' as a way to have a non matching MQ to help terminate the join
  // https://git.io/vznFH
  var query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');
  return mq(query);
}

Здесь они используют нестандартную touch-enabled функцию медиазапроса, что, на мой взгляд, является странной и плохой практикой. Но эй, в реальном мире, я думаю, это работает. В будущем (когда они поддерживаются всеми) эти функции медиазапроса могут дать вам те же результаты: pointer и hover.

Проверьте источник того, как Модернизр делает это .

Хорошую статью, в которой объясняются проблемы с обнаружением касания, см. В Stu Cox: вы не можете обнаружить сенсорный экран .

0
задан 05.05.2020, 22:11

2 ответа

Флетчер,

Я не совсем уверен, но если я правильно понял, у вас есть ситуация, более или менее похожая на этот сценарий:

128 ГБ SSD, скажем / dev / sda, с Windows 7

1 Tb HDD, скажем, / dev / sdb, для данных

500 МБ внешнего жесткого диска, скажем, / dev / sdc, изначально для данных, теперь с Ubuntu AND Grub

и вы хотите загрузиться как с Windows, так и с Ubuntu без необходимости выбирать внешний жесткий диск из BIOS.

В этом случае, как насчет переустановки grub на / dev / sda? Я не думаю, что это невозможно.

Приветствия, Сильвия

0
ответ дан 05.05.2020, 22:12

Вы можете попытаться отключить внешний жесткий диск, а затем посмотреть, загружается ли он. Я предполагаю, что в худшем случае вам придется переписать основную загрузочную запись или что-то подобное, для wandows, но я не знаю, установлены ли ваши окна на твердотельный или терабайтный диск, в любом случае есть несколько способов приблизиться это вы можете зайти на старый диск Windows 7 и запустить командную строку dos и ввести fixboot, или fixmbr, вы можете использовать универсальные версии и делать то же самое, я не так много работал с твердотельными накопителями, поэтому я не могу вам сказать, из опыта, но я думаю, что если вы знаете, как запустить командную строку, у вас все будет в порядке

0
ответ дан 05.05.2020, 22:12

Теги

Похожие вопросы