Javascript IE7-页面刷新后,已访问链接恢复为未登录

Javascript IE7-页面刷新后,已访问链接恢复为未登录,javascript,internet-explorer-7,hyperlink,window.open,visited,Javascript,Internet Explorer 7,Hyperlink,Window.open,Visited,我们的许多用户刚刚从IE6升级到IE7。升级用户报告一个问题,页面刷新后访问的链接恢复为未访问的颜色。这只发生在使用javascript而不是硬编码URL的链接上: <script lang="JavaScript"> <!-- function LoadGoogle() { var LoadGoogle = window.open('http://www.google.com'); } --> </script> <a href="java

我们的许多用户刚刚从IE6升级到IE7。升级用户报告一个问题,页面刷新后访问的链接恢复为未访问的颜色。这只发生在使用javascript而不是硬编码URL的链接上:

<script lang="JavaScript">
<!--
 function LoadGoogle()
 {
  var LoadGoogle = window.open('http://www.google.com');
 }
-->
</script>

<a href="javascript:LoadGoogle()">Google using javascript</a>
<a href="#" OnClick="javascript:LoadGoogle()">Google using javascript OnClick</a>

每当页面刷新时,上述链接将恢复为未访问的颜色。无论是因为回发、手动点击刷新或f5按钮,还是通过自动刷新功能刷新页面,都无关紧要。请注意,上面的代码过于简化了实际发生的事情,但我相信它足够好地说明了这个问题

这给我们的用户带来了一个问题,因为我们为他们提供了一个项目列表,当他们被点击时,这些项目都会通过javascript打开到新窗口中;并在用户完成操作后刷新父页面。每次刷新父页面时,所有这些链接都会恢复为其未访问的颜色,因此我们的用户将无法跟踪他们处理过的项目

我一直在四处挖掘,看起来这是有意为之的行为。IE7不会在浏览器历史记录中注册这些链接。有没有人知道一种变通方法,可以让我们在不必对应用程序代码进行重大修改的情况下,将这些javascript链接保持在已访问状态


谢谢。

有趣的是,我以前从未遇到过这个问题,但它是有意义的

可能的解决方法(我现在无法测试它们,所以如果您愿意,我只能将它们扔到这里供您尝试):


  • 使用唯一的散列:
    您不能指望
    javascript:
    URL来保持已访问/未访问状态。它们不是真实的位置,它们是浏览器在当前文档中执行的命令

    javascript:
    url也不应该被使用

    (实际上,您可能会使用不引人注目的脚本,而不是包含
    onclick
    属性。)

    这将适用于所有设备,无论是否提供JavaScript,是否使用可视化浏览器,它将在状态栏中显示正确的链接,并允许用户使用所有正常的浏览器工具,如中键单击“新建”选项卡或右键单击链接上的书签链接,而不会出现相同的页面、空白页面或错误

    当然,它也将正确地反映目标页面本身的已访问/未访问状态,这比虚假的
    javascript:
    伪URL更可能准确。将
    href
    属性指向实际访问过的位置是获取
    :visted
    渲染的唯一可靠方法

    <a href='http://www.google.com' 
       onclick='LoadGoogle(); return false;'>  
    <!-- You don't need the Javascript: prefix here -->
    
    <a href="javascript:LoadGoogle()">Google using javascript</a>
    
    <a href="#" OnClick="javascript:LoadGoogle()">Google using javascript OnClick</a>
    
    <a href="http://www.google.com/" onclick="window.open(this); return false;">Google proper link</a>