2012-08-30 10 views
12

Có thể mở một cửa sổ hoặc tab mới qua javascript trong trình duyệt Windows Phone 7 không?Làm thế nào để mở một cửa sổ hoặc tab mới qua javascript trong windows phone 7 browser

window.open dường như không được hỗ trợ cũng như không target='_blank'.

Tôi có thiếu gì đó ở đây không? Tính năng cơ bản này hoạt động tốt trên iphone và android. Bất kỳ ý tưởng nào về cách tôi có thể làm việc này trong Windows Phone 7?

+0

Trong cài đặt trình duyệt, có tùy chọn 'Mở liên kết trong tab mới'. Tôi nghi ngờ rằng có thể được overriden bởi các ứng dụng. – Osiris

Trả lời

27

Trên Windows Phone 7, điều này không thể lập trình được. Đó là tất cả trong tay người dùng.

Để trích dẫn một Microsoft employee:

"Người dùng có thể mở một liên kết trong một Tab mới bằng cách nhấn và giữ liên kết đến có được menu ngữ cảnh nhưng một neo hoặc các kịch bản yêu cầu để nhắm mục tiêu một cửa sổ mới bị bỏ qua

có nhiều lý do cho việc này:..

  • truyền thông Cross-cửa sổ không được hỗ trợ
  • Windows Phone chỉ có một phiên bản của trình duyệt do đó, "cửa sổ" mới phải được mở dưới dạng Tab.
  • Trải nghiệm trình duyệt có chế độ toàn màn hình để người dùng không có dấu hiệu trực quan rõ ràng rằng họ đã chuyển sang Tab mới trừ khi họ yêu cầu giải thích.
  • Duyệt "trở lại" trong một Tab mới thoát khỏi trình duyệt đó sẽ là gây nhầm lẫn cho người dùng nếu họ không biết một Tab mới đã được tạo ra."
+0

Đó là điều tôi sợ. Cảm ơn về lời xác nhận! – bmurmistro

+0

câu trả lời tuyệt vời. Có bất kỳ thông tin wether này là trường hợp tương tự cho Windows Phone 8? – dan

+0

Có cách giải quyết nào khác để xác minh xem có thể mở cửa sổ mới để phương pháp dự phòng có thể được sử dụng nếu không? –

3

Nếu bạn đang cố gắng để thêm tính năng này để kiểm soát trình duyệt trong-ap, tôi có thể gợi ý cho bạn một cách:

Bạn phải tiêm một tập lệnh java trên mọi trang web để kiểm soát trình duyệt có thể tải trang thành công. thông báo để gọi hàm ScriptNotify trong mã của bạn phía sau. Khi phát hiện thông báo thích hợp, hãy tạo một phiên bản điều khiển trình duyệt mới và thêm nó vào một mảng hoặc danh sách. Qua đó bạn có thể mô phỏng tính năng tab mới cho điều khiển trình duyệt trong ứng dụng.

mã JS để được tiêm có thể như thế này String NEW_TAB_FUNCTION = "window.open = function(__msg){window.external.notify('addnewtab');};";

Mà có thể được tiêm sử dụng browser.InvokeScript("eval", NEW_TAB_FUNCTION);

Trong ScriptNotify séc addnewtab (giữ IsScriptEnabled = True)

void WebBrowser_ScriptNotify(object sender, NotifyEventArgs e) 
    { 
     if (e.Value == "addnewtab") 
     { 
      //do work here 
     } 
    } 

Lưu ý rằng tôi đã ghi đè hàm window.open trong JS với một hàm sẽ được tiêm mỗi lần trên một trang web mới để nhận thông báo về đầu vào của người dùng.

Cũng lưu ý rằng thao tác này chỉ áp dụng cho Kiểm soát trình duyệt web chứ không phải trình duyệt bên ngoài.

+0

Cảm ơn bạn đã phản hồi. Thật không may, tôi chỉ xử lý trình duyệt "bên ngoài". – bmurmistro

+0

okay trong trường hợp đó câu trả lời thứ hai chứng minh hợp lệ :) –

0

workaround tôi vấn đề này rất đơn giản:

window.open 

trả về NULL nếu thất bại, vì vậy trong trường hợp đó tôi mở nó trong cùng một cửa sổ:

var win = window.open(href, '_blank'); 
    if(!win || win==null){ 
     window.location.href = href; 
    }else{ 
     win.focus();  
    } 

mà là một thực hành tốt để có một dự phòng anyway ...

+0

Hey Tomer, Điều này không hoạt động trong cửa sổ điện thoại 10 Trình duyệt cạnh. Bất kỳ ý tưởng? –

+0

@AshutoshJha Tôi nghĩ rằng nó đã làm với kích thước cửa sổ. Xem tại đây: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11026637/ và tại đây: https://answers.microsoft.com/en-us/insider/forum/insider_internet- insider_spartan-insiderplat_pc/cửa sổ-cạnh-không-không-mở-mới-cửa sổ-trực tiếp/272c607a-253f-47a4-8ec7-4236d30940a1 –