location.href không làm việc trên IE6!
Đăng trong danh mục Javascript bởi admin | Tags: IE, IE6, IE6 cùi bắp, IE6 suck, Javascript, js, location, not working, redirect, return, selectbox, url

Vừa mới giải quyết xong một vấn đề tưởng chừng như đơn giản trong javascript nhưng cực kỳ đáng ghét đối với thằng IE6 – đó là chức năng redirect sử dụng location.href.
Có lẽ các bạn làm javascript cũng biết là nhu cầu redirect cũng thường gặp. Vd như chức năng liên kết website chẳng hạn, sử dụng 1 cái select box, người chọn chọn website nào thì sẽ chuyển sang website đó.

Mình lượt bỏ các phần lập trình, mình chỉ nói tới phần cốt lõi của vấn đề. VD: bạn nhấn nút ‘Chuyển’ thì website sẽ redirect.
Nội dung thẻ A của cái hình ‘Chuyển’:
<a href="javascript:void(0)" onclick="redirectMe();"><img src=".." /></a>
Trong javascript bạn sẽ triển khai hàm redirectMe() như sau:
<script type="text/javascript">
function redirectMe()
{
//giả sử sau khi xử lý select box, bạn lấy được URL sẽ chuyển tới,
//ở đây mình fix để đơn giản DEMO
var url = 'http://bloghoctap.com';
document.location.href = url;
}
</script>
Cái cốt lõi của chức năng này chỉ là cái chỗ gán URL, document.location.href, ngoài ra bạn cũng có thể sử dụng 1 số cách gán khác, vd: window.location, window.location.href… Cái này thì đa số sách nào cũng chỉ, nên nó sẽ chạy thôi. Script này chạy trên hầu hết trình duyệt, ngoại trừ thằng IE6 cùi bắp , mà IE6 cũng vẫn đang được sử dụng nhiều mới đau T_T.
Vậy giải pháp là gì?
1> Bạn cho hàm redirectMe() return false.
<script type="text/javascript">
function redirectMe()
{
//giả sử sau khi xử lý select box, bạn lấy được URL sẽ chuyển tới, ở đây mình fix để đơn giản DEMO
var url = 'http://bloghoctap.com';
document.location.href = url;
return false;
}
</script>
2> Sửa lại cái thẻ A như sau:
<a href="javascript:void(0)" onclick="return redirectMe();">...</a>
Hy vọng bài viết này sẽ giúp bạn nào đang gặp vấn đề nan giải tương tự.
Bài viết liên quan:
2 Lời bình cho bài viết “location.href không làm việc trên IE6!”
Viết lời bình
Bình luận mới nhất
- Cấu hình domain ảo ở localhost
"Chào Cho mình hỏi mình co 1 server window dang chay IIS web asp.net " - Minh Phuong - dotProject - Online Project Management
"@tùng, lỗi quá rõ ràng rồi " - admin - dotProject - Online Project Management
"mình install báo lỗi: not create database.Mình không biết xử lý thế nà" - tùng - Review sách: Hiểu về trái tim - Minh Niệm
"may ban cho minh hoi la : minh nho` nguoi nha di mua sach dum, vi minh" - Tracy - Làm IT nên đọc ebook của nhà xuất bản nào?
"@Lê Hoàng Dũng, Mình cũng" - long - Hội thảo: Heavy Web Optimization – Back-end
"Đã là slide thì sao mà chi tiết được, thế mới gọi là thuyết trình chứ," - DaiGiaCaiBang - Hội thảo: Heavy Web Optimization – Back-end
"Nếu có thể thì anh Tuấn nên viết slide chi tiết hơn tí để mọi người kh" - ichuot - FBNC - Kênh truyền hình TPHCM "pro" nhất hiện nay!
"neu ban dung cap SCTV, ban co the xem SCTV8, day la kenh VITV phat son" - nga - Xây dựng PHP Framework "Made in tự tui"
"Em chào cả nhà ạ. Em xin hỏi 1 chút: Khi em làm 1 website bán hàng t" - mrgun - Review sách: Hiểu về trái tim - Minh Niệm
"hay lam!y nghia that" - rua con_A1
Danh mục
- android (3)
- Business (24)
- Flash (1)
- Graphic Design (16)
- IT Guys (1)
- Javascript (9)
- Miscellaneous (58)
- Photography (9)
- PHP (41)
- Review sách (13)
- Search Engine Optimization (2)
- security (3)
- software (5)
- User Interface Design & Usability (8)
- Web Design (28)
- Web Programming (50)
Lưu trữ
- May 2012 (1)
- March 2012 (2)
- February 2012 (1)
- January 2012 (1)
- December 2011 (1)
- November 2011 (2)
- September 2011 (2)
- August 2011 (1)
- July 2011 (4)
- June 2011 (2)
- May 2011 (2)
- April 2011 (2)
- March 2011 (2)
- February 2011 (2)
- January 2011 (4)
- December 2010 (6)
- November 2010 (3)
- October 2010 (3)
- September 2010 (5)
- August 2010 (6)
- July 2010 (5)
- June 2010 (2)
- May 2010 (5)
- April 2010 (7)
- March 2010 (8)
- February 2010 (4)
- January 2010 (10)
- December 2009 (12)
- November 2009 (12)
- October 2009 (15)
- September 2009 (16)
- August 2009 (11)
- July 2009 (15)
- November 2008 (1)
- October 2008 (1)
- September 2008 (3)


September 26, 2009 at 7:57 pm
Lẽ ra chỉ cần 1 giải pháp duy nhất là dừng hỗ trợ IE6 kaka.
[Reply]
August 19, 2010 at 1:41 pm
Cảm ơn rất nhiều nhé, mình đang cần vì bị lỗi đó hì hì.
[Reply]