2016-11-21 3 views
1

Что-то странное случилось .... Я Phaserjs и попытаться переопределить класс устройств:Глобальная переменная сохранить старое значение

let Device = (function(device) 
     { 
     return { 
      Android :function() { 
       return navigator.userAgent.match(/Android/i) == true; 
       //return Phaser.Device.Android != undefined; 
      }, 
      BlackBerry: function() { 
       return navigator.userAgent.match(/BlackBerry/i) == true; 
      }, 
      iOS: function() { 
       return navigator.userAgent.match(/iPhone|iPad|iPod/i) == true; 
       //return Phaser.Device.iOS == true; 
      }, 
      Opera: function() { 
       return navigator.userAgent.match(/Opera Mini/i) == true; 
      }, 
      Windows: function() { 
       return navigator.userAgent.match(/IEMobile/i) == true; 
       //return Phaser.Device.WindowsPhone != undefined; 
      }, 
      firefox : function() { 
       return navigator.userAgent.toLowerCase().indexOf('firefox') > -1; 
       //return Phaser.Device.Firefox == true; 
      }, 
      any: function() { 
       return (Device.Android() || Device.BlackBerry() || Device.iOS() || Device.Opera() || Device.Windows()); 
      }, 
      debug: function() 
      { 
       //console.log("Ios "+Phaser.Device.Firefox+" Dev:"+Phaser.Device); 
       return "Android:"+Device.Android()+" "+ 
        "BlackBerry:"+Device.BlackBerry()+" "+ 
        "iOS:"+Device.iOS()+" "+ 
        "Opera:"+Device.Opera()+" "+ 
        "Windows:"+Device.Windows()+" "+ 
        "firefox:"+Device.firefox(); 
      } 
      }; 
     })(Phaser.device); 
    export default Device; 

Phaser.Device одноэлементно и как $(document).ready он должен быть инициализирован первым. функция Phaser.Device.whenReady(foobar,this);

Проблема заключается в том, когда я вызываю функцию FireFox или IOS (Device.iOS()) я получаю старое значение и не инициализируются значение (истинного и ложного)

импортировать устройства, как это в основном скрипте :

import Device from './helpers/GameDevice'; 

ПОЧЕМУ? проблема швов является проблемой масштаба, но я не знаю, что!

+0

Какое значение имеет старое значение? –

+0

Я нахожусь в FF, поэтому у меня должен быть Firefox: TRUE и iOS: FALSE, но я получаю FF: FALSE и iOS: true, что нелогично !!! – xeonarno

+0

Обнаружение браузера может завершиться неудачей по многим причинам, включая добавление. navigator.userAgent - это последнее дело, поэтому он не всегда работает –

ответ

0

Невозможно ответить, не зная, где установлены старые значения. Объект устройства содержит только функции (а не переменные), которые возвращают значение true/false на основе navigator.userAgent, так что вы уверены, что : любые старые значения, установленные в любом месте?

Также вы взглянули на строковое значение «navigator.userAgent» в браузере FireFox, который вы используете? Может быть, он вообще не содержит строку firefox?

Обнаружение браузера и ОС из строки navigator.userAgent очень сложно. На протяжении многих лет, navigator.userAgent строка стала unwieldy and very cluttered, потому что основные браузеры были раздвоенная из той же кодовой базы, браузер олицетворения, обратной совместимости и т.д.

Вы можете проверить platform.js, вместо того, чтобы добавить собственные.

Смежные вопросы