2017-07-31 134 views
-1

我有这2个javascript命令,实际上点击了我的表中的第一个链接,脚本工作正常,但它继续无限循环,而我希望执行一次然后停止。我怎样才能做到这一点?只运行一次javascript命令一次

这就是脚本:

<script> 
    $link = $('td a:first'); 
    $link[0].click(); 
</script> 
+6

上面的代码不循环,除非有问题的链接是相同的文档。如果是这样,你需要会话存储或本地存储或类似的标记,你正在做一个后续加载。 –

+0

循环在哪里? –

+0

问题链接是相同的文档,这就是为什么我不知道如何阻止它从无尽的循环。 –

回答

1

你需要做这样的事情:

function autoHandler(){ 
    var item = localStorage.getItem("turn"); 
    if(!item){ 
     localStorage.setItem("turn","1"); 
     $link = $('td a:first'); 
     $link[0].click(); 
    } 
    } 

     autoHandler(); 

https://jsfiddle.net/sozbepyd/

+0

我不知道为什么,但是您的代码在我的情况下不起作用,在页面加载后,它不会自动点击表格的第一个href。 –

+0

可以在涂抹后尝试吗?它应该工作。 此外,重新运行此代码。 使用localStorage.clear()重置本地存储。 – Nitesh

0

这可能会帮助 - 尽管我怀疑循环行为提到可能源于问题中的片段被多次调用,所以它可能是页面上其他脚本活动的结果(???)。

<script> 
    window.flag = window.flag || true; 
    if (window.flag) { 
     $('td a:first')[0].click(); 
     window.flag = !window.flag; 
    } 
</script> 

正如我所说的,可能有帮助,可能不会。 :)

编辑光COMMENT

我会建议使用window.sessionStorage而不是window.localStorage作为localStorage将继续下去,直到/除非用户清除其浏览器的缓存。这取决于您是否希望在所有后续访问中永远禁止事件,或者仅在每个会话中禁止一次行为。如果后者在Nitesh的回答中将localStorage替换为sessionStorage

由于local-sessionStorage都是类似Cookie的功能,因此最好通知访问者存储信息(Cookie和隐私策略)。

+0

从评论,它实际上是一个链接到同一页 - 重新加载页面。 –

+0

嗯,好的。那么@ Nitesh的'localStorage'解决方案就更好了。 –

1

我不知道你为什么需要本地/会话存储?你可以简单地比较与当前的URL链接,这样的:

<script> 
    var $link = $('td a:first'); 
    if(window.location.href.indexOf($link.attr('href')) === -1) { 
     $link[0].click(); 
    } 
</script> 
+0

我用这段代码解决了我的问题!非常感谢 –