2009年11月13日星期五

[转][精品]�� location.href � location.replace 的差�����用

在 JavaScript 中若要撰����址程式非常容易,有��的人都知道要用 location.href �性,而另外�有一� location.replace 可用,功能差不多,但在��上�用是有差�的,我今天就���它�之�的差�。

首先� JavaScript 初�者��清楚的�例,避免��程式。

location 物件的 href 是��性,�性需要直接指定其值,例如:

location.href = 'http://blog.miniasp.com/';  

location 物件的 replace 是�方法(method)函式(function),需要加上刮��入��,例如:

location.replace('http://blog.miniasp.com/');  

接著,我用一���的例子�明���用法直接下��的差�:

<a href="a.htm">a.htm</a>  
|  
<a href="#" onclick="location.href='a.htm'">location.href='a.htm';</a>  
|  
<a href="#" onclick="location.replace('a.htm')">location.replace('a.htm')</a>  

1. 直接用 <a href="a.htm"> ��的作法

  • ��器送出 Referer �� HTTP Header
  • ��器����的�史�� ( 好���器的 上一� 、 下一� 按�可以�作 )

2. 透� JavaScript 的 location.href 指派�址

  • ��器不�送出 Referer �� HTTP Header
  • ��器����的�史�� ( 好���器的 上一� 、 下一� 按�可以�作 )

3. 透� JavaScript 的 location.replace �入�址

  • ��器不�送出 Referer �� HTTP Header
  • ��器不�����的�史��! ( ��器�����史�� )

---

�解差�後,我再介�一���的�用,�你有更深一�的��。

我需要在��下��案,但有��的人��知道,通常的作法有��:

  1. �新�窗�行下��作
    • ��:��好�,�案�直接�在 Browser �窗中上。
    • 缺�:有�後�案下�了,但是�窗��留!
  2. 在本�直接下�
    • ��:��好�,�案�直接下�。
    • 缺�:若遇到�案�直接在 User 的��器直接��的��,有可能�� User 等到�案下�完才���,例如有些 PDF �非常大,下�的�段�� Browser �卡死不能�。
  3. 透�一��藏的 Frame 或 IFrame �行下� ( 直接透� <a> ��的 target 指定 iframe 目� )
    • ��:��好�,�案�直接下�,��不好�也不��留�窗。
    • 缺�:��不好��案就看不到了,不�可以透��定 Content-Disposition �制下�。
    • 缺�:�使用者��下����案,又按下��器上的「回上一�」�,�重新下�上一��案!
  4. 透�一��藏的 Frame 或 IFrame �行下� ( 透� location.href 指定下�目� )
    • ��:��好�,�案�直接下�,��不好�也不��留�窗。
    • 缺�:��不好��案就看不到了,不�可以透��定 Content-Disposition �制下�。
    • 缺�:�使用者��下����案,又按下��器上的「回上一�」�,�重新下�上一��案!
  5. 透�一��藏的 Frame 或 IFrame �行下� ( 透� location.replace 指定下�目� )
    • ��:��好�,�案�直接下�,��不好�也不��留�窗。
    • ��:�使用者��下����案,又按下��器上的「回上一�」�,因�在��器中� frame ������,所以不��生重�下�的�作。
    • 缺�:��不好��案就看不到了,不�可以透��定 Content-Disposition �制下�。

由此可知,第 5 �指定下�的方法是最好的!�然是一���的差�,但���上就是有那�一� "眉角" (台�, 小技巧的意思),一�小��分享。^_^

没有评论: