【问题标题】::Visited Links Without Leaving page:访问过的链接不离开页面
【发布时间】:2015-08-25 21:52:16
【问题描述】:

我目前正在构建一个 Sharepoint 页面。该页面使用锚标记作为链接,而不是离开页面,而是触发一个模式对话框。它们的功能就像它们是正常的链接一样。 注意: div 内容是通过 rest 拉入的,这意味着它们是通过 javascript 函数填充的,因此手动编辑 css 将不会持续存在。

我使用锚标记是因为我想访问 :visited 标记,以便用户知道他们之前查看过哪些链接。这里的问题是我一直在使用 href='#' 的占位符标签。这并没有给我预期的结果,因为当每个链接都有 href='#' 时,访问一个链接会改变页面上所有链接的颜色。

我试图包含通过我的对话框函数打开的链接,以便每个链接都有一个唯一的 URL,但为了避免离开页面,我的函数返回 false,这反过来不会触发 :visited 事件。

有没有什么方法可以让我拥有唯一的 URL 来区分 non-static Div 条目和 :visited 子类,而无需让锚导航离开当前页面?

<a class="hyper" href="myLinkHere" onclick="return myDialog(//start dialog then return false);">This is a Title</a>

【问题讨论】:

  • 用户点击链接,添加类到链接。为你添加的类定义一个 CSS 规则,完成。

标签: javascript css anchor


【解决方案1】:

如果您的意图是在一个会话中保留链接状态,那么只需在 javascript 中管理它。在返回 false 之前,更改 CSS 类或执行您计划更改链接外观的任何其他操作。

如果您的意图是跨会话保持链接状态,则在客户端使用 javascript 和您在服务器端使用的任何内容的组合来为给定用户维护该状态.

我知道从某种意义上说,如果可以的话,将其全部保留在客户端会更容易,但让我们面对现实吧——当用户点击链接时,他们实际上并没有访问任何东西,因此,尝试表现得好像他们一样不一定是最合乎逻辑的选择。

【讨论】:

    【解决方案2】:

    @James Waddington:你的回答太棒了!!你通过一个小的调整解决了这个问题。现在我也可以将已访问链接用于模态框或颜色框。

    您可以在href 中使用#something 来指定要链接到的内部页面ID。如果您指定的 id 不在页面上,您将拥有一个唯一的 ID,将链接标记为已访问,而不会实际带您到任何地方。比如……

    <a href="#test">Test</a>
    <a href="#test2">Test</a>
    <a href="#test3">Test</a>
    <a href="#test4">Test</a>
    

    【讨论】:

      【解决方案3】:

      您可以在href 中使用#something 来指定要链接到的内部页面ID。如果您指定的 id 不在页面上,您将拥有一个唯一的 ID,将链接标记为已访问,而不会实际带您到任何地方。比如……

      <a href="#test">Test</a>
      <a href="#test2">Test</a>
      <a href="#test3">Test</a>
      <a href="#test4">Test</a>
      

      Quick Fiddle.

      【讨论】:

      • 如果 OP 返回 false,visited 仍然不会生效(见他的帖子)。如果 OP 没有返回 false,则导航栏中的 url 会将这些附加到末尾,并且历史记录将在当前页面上到处都是页面锚。我不认为这是解决问题的一个特别好的解决方案,因为它只是发挥了 OP 的错误假设,即使用访问状态是解决问题的最佳方法。
      • 虽然我认为您很有可能是对的,并且您提供了非常合理的替代方案,但您正在做出一些假设。由于这个问题实际上是非常具体的 :visited,所以我认为直接回答是合适的。
      • 他说“我正在使用锚标记,因为我想访问 :visited 标记,以便用户知道他们以前查看过哪些链接。”他提出了两个问题:“我如何在不离开页面的情况下使 :visited 工作?”,在这里,“我如何使用户知道他们以前查看过哪些链接?”第一个问题不是关于他的核心问题的问题。他的核心问题是问题2。问题1是关于他对问题2的预定解决方案。我是说预定解决方案是一个糟糕的解决方案,并且干净地解决他的实际核心问题更有帮助。跨度>
      • 顺便说一句,这些都不会挑战您直接回答的权利。我只是说(用我的 cmets 和我的反对票)我不同意通过帮助他搭建脚手架来暗示支持他糟糕的解决方案是明智的 :-)
      • 当然。我把你的答案连根拔起,因为我认为这可能是最好的方法。但这是由 OP 做出明智的选择。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2023-04-02
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 2022-12-09
      相关资源
      最近更新 更多