2013-04-09 33 views
8

Tôi đang cố chạy các trường hợp kiểm tra qunit bằng PhantomJS. Một trong các thử nghiệm của tôi đang treo khi phantomJS cố truy cập chức năng navigator.geolocation của DOM. thử nghiệm tương tự đang hoạt động tốt trong trình duyệt, chỉ cần treo trong bảng điều khiển với phantomJS.phantomJS có hỗ trợ định vị địa lý không?

doe phantomJS hỗ trợ định vị địa lý? Bất kì lời đề nghị nào?

phá vỡ trong những điều sau nếu tình trạng

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

Trả lời

10

số

Đơn giản chỉ cần kiểm tra ví dụ 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

Thank you very much. Nó thực sự hữu ích. Được quản lý để nhảy qua vị trí địa lý –

4

Bạn có thể thêm "geolocation-fake-support" để chạy thử nghiệm hoặc thực hiện các công cụ khác bằng cách tiêm các hàm được yêu cầu vào DOM khi khởi tạo. Ví dụ sau giả mạo navigator.geolocation.getCurrentPosition, do đó khi trang web trong trình duyệt gọi điểm cuối API này PhantomJS sẽ luôn trả về vị trí được định cấu hình.

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() 
     }); 
    } 
}; 
Các vấn đề liên quan