2013-06-21 55 views
5

Tôi đang phát triển một ứng dụng web di động với jQuery + Phonegap sử dụng API Google Maps v3 và tôi đang gặp một số vấn đề với các liên kết được đính kèm với bản đồ.Cách mở liên kết Google Maps trong cửa sổ bật lên?

Câu hỏi của tôi là có thể mở Điều khoản và điều kiện và Google Maps liên kết trên cửa sổ bật lên thay vì mở chúng trên cùng cửa sổ để tránh mắc kẹt trên các thiết bị không có nút vật lý như nút Apple. Tôi đã cố gắng đính kèm một sự kiện 'click' vào các phần tử con của khung bản đồ và thay đổi mục tiêu của chúng nhưng tôi đã không thể đạt được điều đó. Có giải pháp nào không?

Cảm ơn.

Trả lời

0

GIẢI PHÁP! Tôi đã tìm thấy giải pháp cho câu trả lời này: https://stackoverflow.com/a/16575541/2507996. Nó thay đổi hành vi liên kết bắt sự kiện nhấp và mở các cửa sổ mới bằng PhoneGap/Cordova InAppBrowser. Cảm ơn tất cả các câu trả lời của bạn.

3

Cả hai liên kết này đều có target="_blank" đối với chúng, vì vậy thông thường chúng sẽ tự động mở trong cửa sổ mới. Ví dụ: liên kết Google Maps trông giống như sau:

<a target="_blank" 
    href="http://maps.google.com/maps?..." 
    title="Click to see this area on Google Maps" 
    style="position: static; overflow: visible; float: none; display: inline;" 
> 
    <div ...> 
     <img ...> 
    </div> 
</a> 

Nhưng có vẻ như PhoneGap đang ghi đè hành vi đó như bạn đã đề cập trong nhận xét. Trong thực tế nếu bạn tìm kiếm:

phonegap target _blank 

bạn sẽ tìm thấy khá một chút về chủ đề này, đặc biệt là this discussionthis issue.

Có vẻ như họ muốn mọi người sử dụng số điện thoại InAppBrowser của PhoneGap, nhưng dường như nó được gắn đặc biệt vào chức năng window.open(). Vì vậy, bạn có thể thử thay đổi href trong các yếu tố này <a> để sử dụng cuộc gọi window.open() thay vì URL đơn giản.

Ví dụ, nếu bạn đã nhận được một tham chiếu đến một trong những <a> yếu tố trong một biến gọi là link, bạn có thể thử:

link.href = 
    "javascript:window.open('" + 
     link.href + 
    "', '_blank', 'location=yes');"; 

Đó thay đổi href từ:

http://google.com/etc.etc. 

đến (trên thực tế tất cả trên một dòng, được định dạng tại đây để dễ đọc):

javascript:window.open(
    'http://google.com/etc.etc.', 
    '_blank', 
    'location=yes' 
); 

Một khả năng khác có thể là kỹ thuật trong số this answer sử dụng rel="external" trên thẻ <a> và thay đổi trong số MainViewController. Nhưng điều đó không được chấp nhận và yêu cầu một số lượng tương tự không quan trọng với các phần tử DOM.

Một suy nghĩ khác ... Thông thường, không quan tâm đến các hoạt động bên trong của các bản đồ này và liên kết ToS có thể được coi là vi phạm điều khoản dịch vụ. Tuy nhiên, tôi nghĩ bạn có thể dễ dàng tranh luận ở đây rằng bạn chỉ bảo toàn mục đích ban đầu của các liên kết này khi đối mặt với vấn đề PhoneGap ngăn chúng hoạt động đúng cách.

+0

Cảm ơn câu trả lời. Tôi nhận thấy nó, nhưng vấn đề là khi trang web được đóng gói như một ứng dụng gốc bằng cách sử dụng Phonegap, tất cả các trang mở trong cùng một cửa sổ để mô phỏng một ứng dụng gốc thực sự. Vì vậy, tôi muốn mở nó trong một cửa sổ pop-up hoặc tương tự. – alvarofd

0

Hãy thử điều này trong window.location của bạn mà bạn mở trong tab mới:

i.e: <a href="#" onclick="window.open('stackoverflow.com')">New Map(In new window)</a> 
0

Hãy thử sử dụng các plugin ChildBrowser. Bạn vẫn có thể cần phải thực hiện một số thủ thuật JavaScript để nắm bắt vòi nước và mở nó trong ChildBrowser.

Các vấn đề liên quan