一.使用href:
Js的幾種調用方法(參考總結的)
1、a href="javascript:js_method();"
這是常用的方法,但是這種方法在傳遞this等參數的時候很容易出問題,而且javascript:協議作為a的href屬性的時候不僅會導致不必要的觸發window.onbeforeunload事件,在IE里面更會使gif動畫圖片停止播放。W3C標准不推薦在href里面執行javascript語句
2、 a href="javascript:void(0);" οnclick="js_method()"
這種方法是很多網站最常用的方法,也是最周全的方法,onclick方法負責執行js函數,而void是一個操作符,void(0)返回undefined,地址不發生跳轉。而且這種方法不會像第一種方法一樣直接將js方法暴露在瀏覽器的狀態欄。
3、a href="javascript:;" οnclick="js_method()"
這種方法跟跟2種類似,區別只是執行了一條空的js代碼。
4、a href="#" οnclick="js_method()"
這種方法也是網上很常見的代碼,#是標簽內置的一個方法,代表top的作用。所以用這種方法點擊后網頁后返回到頁面的最頂端。
5、a href="#" οnclick="js_method();return false;"
這種方法點擊執行了js函數后return false,頁面不發生跳轉,執行后還是在頁面的當前位置。
綜合上述,在a中調用js函數最適當的方法推薦使用:
-
<a href="javascript:void(0);" οnclick="js_method()"></a>
-
<a href="javascript:;" οnclick="js_method()"></a>
-
<a href="#" οnclick="js_method();return false;"></a>
a中href="#"表示回到最頂部。如果當前頁面中需要滾動的話,那么用這種方式就可以直接回到頂部。比如有些網站會在右下角制作一個圖標按鈕,回到頂部,那么此時可以考慮用這種最簡單的方式實現。
<span style="font-size:14px;"><a href="#">回到最頂端</a></span>
三、href="URL"的作用
1、URL為絕對URL
此時指向另一個站點,比如href="http://write.blog.csdn.net",那么點擊時就會直接跳轉到這個鏈接的頁面。
2、URL為相對URL
此時指向站點內的某個文件,比如href="/test.doc",那么點擊時就會直接下載文件。
3、錨 URL
此時指向頁面中的錨,比如href="#top",那么點擊時就會到當前頁面中id="top"的這個錨點,實現當前頁面的所謂跳轉。用的最多就是在可滾動頁面中,添加菜單,可以直接回到頁面中的某個部分的內容。
<Link
// 彈出新的選項卡只能用search來傳遞數據,單頁面的話可以使用state
// 注意,此處search傳遞是以URL拼接的方式傳遞傳遞長度根據瀏覽器限制來的,只能傳遞字符串,
// 還有search傳遞過去的參數會默認追加一個? e.g search?id=1
// state則沒有限制,可直接傳遞obj
to={{ pathname: "/maker/bill/detail/supplement", search: JSON.stringify(billDetailObj) }}
target="_blank"
// 當target="_blank"打開新頁面的時候,state內容無法傳遞
state:{id:1}
className="fontBlue fontWeight">
打開新頁面
</Link>
頁面接收:
// 從location中取出search
let search = this.props.history.location.search
// TODO 調試完畢以后需要在這里增加判斷,如果該參數為空則非正常途徑進入需要跳轉到賬單主頁
// 這里是因為默認前面有一個?,切掉
search = search.substr(1,search.length);
// 因為傳遞的有中文,所以此處需要decodeURI進行URL解碼
const searchObj:BillDetail = JSON.parse(decodeURI(search));
console.log(searchObj);
// 將處理完畢的數據更新至state,並渲染到頁面
this.setState({
billdDetail:searchObj
})