突然發現蛙齋的JavaScript分類中的文章只有三篇,但對於小蛙的工作來說JavaScript也算是重要的一環,還是記錄一下以後查找方便。這篇主要是記錄網路上查到的一些關於「重新整理頁面」的資料。

在《Javascript刷新頁面的幾種方法 @ 玲瓏天空》一開頭就直接寫明了重新整理頁面的方法,整篇文章也很細心的列出一些常用的情況。

Javascript刷新頁面的幾種方法:
1   history.go(0)
2   location.reload()
3   location=location
4   location.assign(location)
5   document.execCommand(‘Refresh’)
6   window.navigate(location)
7   location.replace(location)
8   document.URL=location.href

上面的八種方法小蛙並沒有一個一個測試,只找了符合自己使用情況的方法,例如:小蛙有一個編輯頁面上有多選欄位、單選欄位、文字欄位 … 等,這些資料原本就已經有值了(從資料庫撈出來),而有一個重填按鈕,點了之後將頁面設定為尚未編輯前的資料,也就是如果原本多選欄位選了五個,編輯時把全部取消勾選,後來發現想要恢復原始設定點了重填按鈕,希望可以回復原始資料(跟新增時的重填不同,新增時的重填只要清空即可),好吧!這裡可能寫的有點複雜,總而言之最偷懶的方法就是讓頁面變成第一次載入時的狀況,於是小蛙直接用JavaScript的重新整理。
常看到的重新整理大概是location.reload();,但做了之後發現,原本被修改過的欄位並不會回復到原始狀況,就是說上面取消的五個多選欄位,並不會恢復成勾選狀態,之後試了location=location可以達到這個要求。有點像是F5(重新整理)跟Ctrl+F5(強制重新整理)的差別,location.reload();跟小蛙直接點F5一樣結果,而location=location的結果跟Ctrl+F5相同。
後來小蛙在《请问如何区别window.location.Reload()和window.location.href=window.location.href;》這個討論串中找到了為什麼location.reload();不能的答案

flyerwing :
定义和用法
reload() 方法用于重新加载当前文档。
语法
location.reload(force)说明
如果该 方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变。如果文档已改变,reload() 会再次下载该文档。如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的。
如果把该方法的参数设置为 true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。这与用户在单击浏览器的刷新按钮时按住 Shift 健的效果是完全一样。
好象是说:
如果window.loacation.reload(true)==window.location.href=”xxx.xx”;

馬上試了一下,果然把location.reload();改成location.reload(true);就可以了!

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *