如何在点击链接类后加载JavaScript页面刷新?

时间:2018-03-03 02:50:26

标签: javascript

如何在用户点击特定链接类后才加载JavaScript主页刷新?当用户点击链接时,我需要它,一些JavaScript(或PHP,或其他)检测到他已点击此类链接,然后刷新原始页面。

示例:

用户点击时:

<a class="link_id" target="blank" href="http://externallink.com">external link</a>

自动加载以下的JavaScript:

window.location.reload();

PS:由于多种原因(例如我的项目特殊性),我无法使用onclick="location.reload()",按钮或类似方法。而且,我的HTML将是广泛而肮脏的。此外,项目让用户知道刷新是通过链接上的onclick直接进行是不安全的。所以我正在寻找另一种方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

onclick正是您所说的。但是,如果确实不想使用它,您可以随时执行此操作:

<a id="link_id" href="javascript:location.reload()">link</a>

如本片段所示:

let i = 0;setInterval(() => {document.getElementById("span").innerHTML = i;i++}, 50);
<a href="javascript:location.reload()">link</a><br>
<span id="span"></span>

编辑:由于您在评论中实际告诉我您想要的内容,我会向您提供代码!

由于您只有一个ID为link_id的元素,因此您可以执行以下任何操作:

<a id="link_id" href="http://link.com" onclick="location.reload()">link</a>

OR

document.getElementById("link_id").onclick = location.reload;

OR

document.getElementById("link_id").addEventListener("click", location.reload);

如果您在一个ID下有多个元素,则需要重新考虑您的HTML知识

另一个编辑:随着神秘和模糊的气氛展现,我看到你有多个元素有一个ID,或者似乎。在这种情况下,使用class,然后执行以下操作:

Array.from(document.getElementsByClassName("<classname>")).forEach(el => {
    el.addEventListener("click", () => {location.reload();});
});

我真的希望这是最后的编辑 - 将<classname>替换为班级名称,当然

Array.from(document.getElementsByClassName("<classname>")).forEach(el => {
  el.addEventListener("click", () => {
    if (!sessionStorage.getItem("reloaded")) {
      sessionStorage.setItem("reloaded", true);
      location.reload();
    }
  });
});

查看这个jsfiddle - 它有效:https://jsfiddle.net/gbdu3vpm/1/