location.href ไม่ทำงานเพราะ # (hashtag)

ไปเจอปัญหาแปลกๆ มา 1 อย่างตามหัวเรื่องเลย เพราะอยู่ดีๆ ลูกค้าก็แจ้งมาว่าไม่สามารถเข้าสู่ระบบได้ หลังจากเช็คดูก็ปกติดี จนกระทั่งเหลือบไปเห็นว่า ที่ Url ของลูกค้ามี #login แปะท้ายเข้าไปด้วยอยู่ ตัวอย่าง https://www.toskysoft.com/@kanexkane#login

ทำให้ตอนสั่ง window.location.href ระบบมันก็นิ่งไปเฉยๆ เลย แถมตอนแรกนึกว่าอะไรรู้ป่ะ วันนี้เป็นวันแรกที่อัพเกรด macOS Sierra

macos-sierra

 

ก็สงสัยก่อนเลยหรือตัว macOS มันทำอะไรอีก 555 เพราะลูกค้าก็ใช้ Macbook เราก็ไปลองกะ Safari ก่อนเลย โคตรเขิน

หลังจากที่หาเจอแล้ววิธีแก้ปัญหาก็ง่ายๆ แค่ทำให้มันไม่มี #login ติดอยู่ตอนสั่ง window.location.href ก็พอ คำสั่งก็จะออกมาเป็นแบบนี้

 

window.location.href = "https://www.toskysoft.com/@kanexkane#login".replace(location.hash,"");

 

เรียบร้อยแล้ว แก้บั๊กง่ายๆ ที่หายากไปอีก 1 จุด ที่บอกว่าหายากเพราะว่าไม่เคยคิดว่ามันจะเป็นนี่สิ!