最近做的一個項目,利用form表單(可以避免跨域問題)提交,在chrome可以正常進行跳轉,但是在手機端,以及一些pc端瀏覽器卻無法正常跳轉。通過檢查后台日志,沒有正常跳轉的都是因為后天直接沒有收到該請求,此時就一個疑惑: WHY?
查找問題
由於在chrome下是可以進行的,潛意識地便認為自己的代碼沒有,有問題的是瀏覽器(或者經過特殊處理的,微微一笑)。結果還正在網上找到一個可以佐證自己的思路的問題link,此文說了一個問題,若是自動觸發表單的submit()方法時,會被瀏覽器記錄為是廣告,從而被攔截了(這瀏覽器都被整怕了呀)
因而在尋找如何解決廣告這條道路上漸行漸遠。但是這個問題卻不得不解決,嚴重影響公司業務,更多地便關心到自己的錢袋啊。
在跟產品溝通過程中,說是參數問題。遵循着輕松時刻來解決試試的心態。寫了一個demo進行嘗試。一切ok,以為會出現的問題,居然絲毫沒有浮出水面的跡象。
拿着demo和線上代碼對比
demo
$('form').submit()
線上
$('form').submit()
location.reload()
在鎖定代碼差異化后,果斷去掉location.reload(),之前的問題瞬間煙消雲散,撥開烏雲見晴空。內心真是......
自作聰明啊,話說為何chrome卻沒有出現這個問題呢。有點不太理解,這代碼應該是同步的,各行其事,應該不至於才是。此時只能理解為,在form提交時,此時瀏覽器還在執行時的實例被location.reload重置了,導致之前的請求直接被攔截了(雖然有些扯)
希望有大神能指點一二
暫且記上這一個坑
