2013-04-09 2 views
8

Я пытаюсь запустить тесты Qunit с помощью PhantomJS. Один из моих тестов висит, когда phantomJS пытается получить доступ к функции navigator.geolocation DOM. тот же тест работает отлично в браузере, просто зависает в консоли с помощью phantomJS.Поддерживает ли phantomJS геолокации?

doe phantomJS поддержка геолокации? любое предложение?

перерывов в следующем, если условие

if(navigator.geolocation) { 
      window.navigator.geolocation.watchPosition(updateLocation, null, { frequency: 3000 }); 
     } 

ответ

10

No.

Просто проверьте features.js пример.

>phantomjs.exe features.js 
Detected features (using Modernizr 2.0.6): 

Supported: 
    touch 
    generatedcontent 
    fontface 
    flexbox 
    canvas 
    canvastext 
    postmessage 
    websqldatabase 
    hashchange 
    history 
    draganddrop 
    websockets 
    rgba 
    hsla 
    multiplebgs 
    backgroundsize 
    borderimage 
    borderradius 
    boxshadow 
    textshadow 
    opacity 
    cssanimations 
    csscolumns 
    cssgradients 
    cssreflections 
    csstransforms 
    csstransitions 
    localstorage 
    sessionstorage 
    webworkers 
    applicationcache 
    svg 
    inlinesvg 
    smil 
    svgclippaths 

Not supported: 
    csstransforms3d 
    webgl 
    geolocation 
    indexeddb 
    video 
    audio 
+0

Большое спасибо. Это было действительно полезно. Удалось перепрыгнуть через геолокацию –

4

Вы можете добавить «геолокации-фальшивка-поддержка» для запуска тестов или делать другие вещи, вводя необходимые функции в DOM при инициализации. Следующий пример подделывает навигатор.geolocation.getCurrentPosition, поэтому, когда веб-сайт в браузере вызывает эту конечную точку API, PhantomJS всегда будет возвращать настроенное местоположение.

webpage.onInitialized = function() { 
    webpage.injectJs('geolocation.js') 
}; 

geolocation.js:

window.navigator.geolocation = { 
    getCurrentPosition: function (success, failure) { 
     success({ 
      coords: { 
       // Will always return Germany, Rostock 
       latitude: 54.0834, 
       longitude: 12.1004 

      }, timestamp: Date.now() 
     }); 
    } 
}; 
Смежные вопросы