2011-12-08 10 views
6

Tôi muốn có nó để khi người dùng tải trang của chúng tôi, kiểm tra xem họ có đang ở trên thiết bị di động không và sau đó nó sẽ chuyển hướng họ đến phiên bản di động của trang web của chúng tôi, nhưng giữ thẻ băm ban đầu từ liên kết họ đã theo dõi. Tôi đã thử đặt vị trí mới bằng thẻ băm trong javascript và nó hoạt động trong Chrome nhưng không hoạt động trong Safari. Tôi đã đọc rằng đây chỉ là một cái gì đó Safari không. Có công việc nào xung quanh vấn đề này không?Làm cách nào để chuyển hướng đến trang web trên điện thoại di động nhưng giữ thẻ băm?

+0

bạn có thể chỉ cho chúng ta mã của bạn? – JamesHalsall

+0

Vâng, tôi đã chỉ thiết lập Window.location trong javascript. Hóa ra Safari không hỗ trợ chuyển hướng thẻ băm, điều này rất khó chịu khi xem xét rằng iPhone và iPad là tất cả Safari. Vì vậy, một số js như window.location = "http://www.example.com/#page2" sẽ đưa bạn đến trang web, nhưng nó sẽ không chuyển sang page2 như thẻ băm nói. Safari chặn thẻ băm khi chuyển hướng. –

+0

Bạn đã đọc ở đâu * đây chỉ là một thứ gì đó của Safari *? – alex

Trả lời

3

Chúng tôi thực sự chỉ có một báo cáo lỗi rất giống với khách hàng của chúng tôi.

Đối với chúng tôi, kịch bản có liên quan đến thẻ bắt đầu bằng # #quicklogin/abc123 và chỉ xuất hiện khi xem trang web trong Safari. Đây là một phần của URL ban đầu mà khách hàng sẽ tải và sẽ hiển thị chúng với màn hình đăng nhập thay thế. Khi truy cập trực tiếp vào URL trong Safari, trình duyệt đã xóa toàn bộ thẻ và bỏ qua nó.

Khi chúng tôi thay đổi điều này thành một cái gì đó như #quicklogin/test (hoặc bất kỳ băm nào khác chỉ chứa các ký tự alpha) nó hoạt động tốt. Nó cũng hoạt động tốt khi tải trang web và sau đó áp dụng thủ công thẻ băm theo hai bước riêng biệt.

Vì vậy, kết luận của chúng tôi là có thể có sự cố với thẻ bắt đầu bằng # có chứa giá trị số trong Safari.

+3

Chúng tôi đã thử nghiệm này một chút, và * chỉ * chữ thường hoạt động ('a-z'). Ít nhất '=', '_' và' Z' dẫn đến việc Safari xóa toàn bộ đoạn. – Timmmm

3

Bạn phải thực hiện điều này bằng cách chuyển hướng bằng javascript (vì javascript có thể đọc giá trị băm) hoặc bằng cách trả về html khác nhau theo điều kiện dựa trên tác nhân người dùng.

Trình duyệt có nhiệm vụ bảo toàn đoạn băm thông qua 302, nhưng thường không (xem lỗi webkit 3 năm bên dưới) và nếu không đoạn mã băm không được gửi tới máy chủ để chúng không thể xử lý thủ công.

https://bugs.webkit.org/show_bug.cgi?id=24175

4

Bạn nên thoát khỏi '#' biểu tượng và tất cả mọi thứ sẽ OK

+0

Điều này không có ý nghĩa gì so với bản sao khác của bạn mà bạn đã đăng trên một câu hỏi khác. –

+2

Điều này thực sự hoạt động ... Thay thế "#" bằng "% 23" hoạt động như một nét duyên dáng! Cảm ơn bạn! – user1265146