browsers.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * noVNC: HTML5 VNC client
  3. * Copyright (C) 2012 Joel Martin
  4. * Licensed under MPL 2.0 (see LICENSE.txt)
  5. *
  6. * See README.md for usage and integration instructions.
  7. */
  8. import * as Log from './logging.js';
  9. // Touch detection
  10. export var isTouchDevice = ('ontouchstart' in document.documentElement) ||
  11. // requried for Chrome debugger
  12. (document.ontouchstart !== undefined) ||
  13. // required for MS Surface
  14. (navigator.maxTouchPoints > 0) ||
  15. (navigator.msMaxTouchPoints > 0);
  16. window.addEventListener('touchstart', function onFirstTouch() {
  17. isTouchDevice = true;
  18. window.removeEventListener('touchstart', onFirstTouch, false);
  19. }, false);
  20. var _cursor_uris_supported = null;
  21. export function browserSupportsCursorURIs () {
  22. if (_cursor_uris_supported === null) {
  23. try {
  24. var target = document.createElement('canvas');
  25. target.style.cursor = 'url("data:image/x-icon;base64,AAACAAEACAgAAAIAAgA4AQAAFgAAACgAAAAIAAAAEAAAAAEAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAA==") 2 2, default';
  26. if (target.style.cursor) {
  27. Log.Info("Data URI scheme cursor supported");
  28. _cursor_uris_supported = true;
  29. } else {
  30. Log.Warn("Data URI scheme cursor not supported");
  31. _cursor_uris_supported = false;
  32. }
  33. } catch (exc) {
  34. Log.Error("Data URI scheme cursor test exception: " + exc);
  35. _cursor_uris_supported = false;
  36. }
  37. }
  38. return _cursor_uris_supported;
  39. };
  40. export function _forceCursorURIs(enabled) {
  41. if (enabled === undefined || enabled) {
  42. _cursor_uris_supported = true;
  43. } else {
  44. _cursor_uris_supported = false;
  45. }
  46. }