只运行一次javascript命令
我有这两个javascript命令,它们几乎可以单击表中的第一个链接,脚本工作正常,但它会继续执行一个无休止的循环,而我希望它执行一次,然后停止。我怎样才能做到这一点 这就是剧本:只运行一次javascript命令,javascript,jquery,Javascript,Jquery,我有这两个javascript命令,它们几乎可以单击表中的第一个链接,脚本工作正常,但它会继续执行一个无休止的循环,而我希望它执行一次,然后停止。我怎样才能做到这一点 这就是剧本: <script> $link = $('td a:first'); $link[0].click(); </script> $link=$('td a:first'); $link[0]。单击(); 您需要执行以下操作: function autoHandler(){
<script>
$link = $('td a:first');
$link[0].click();
</script>
$link=$('td a:first');
$link[0]。单击();
您需要执行以下操作:
function autoHandler(){
var item = localStorage.getItem("turn");
if(!item){
localStorage.setItem("turn","1");
$link = $('td a:first');
$link[0].click();
}
}
autoHandler();
这可能会有所帮助-尽管我怀疑所提到的循环行为可能是由问题中的片段多次调用引起的,因此它可能是页面上其他脚本活动的结果(???)
window.flag=window.flag | | true;
如果(窗口标志){
$('td a:first')[0]。单击();
window.flag=!window.flag;
}
正如我所说,可能会有帮助,也可能不会
根据评论进行编辑
我建议使用window.sessionStorage
而不是window.localStorage
作为localStorage
将一直存在,直到/除非用户清除浏览器缓存。这取决于您是否希望在所有后续访问中永远禁止该事件,或仅在每个会话中禁止该行为一次。如果后者在Nitesh的回答中将localStorage
替换为sessionStorage
由于
local-
和sessionStorage
都是类似Cookie的功能,因此最好通知访问者正在存储信息(Cookie和隐私策略)。我不知道为什么需要本地/会话存储来实现这一点?您可以简单地将链接与当前url进行比较,如下所示:
<script>
var $link = $('td a:first');
if(window.location.href.indexOf($link.attr('href')) === -1) {
$link[0].click();
}
</script>
var$link=$('td a:first');
if(window.location.href.indexOf($link.attr('href'))=-1){
$link[0]。单击();
}
除非链接指向同一文档,否则上述代码不会循环。如果是,您将需要会话存储或本地存储或类似功能来标记您正在进行后续加载。循环在哪里?所讨论的链接指向同一文档,这就是为什么我不知道如何阻止它进行无休止的循环。在这种情况下,@T.J.Crowder已经回答了你的问题。我不知道如何实现本地存储或如何标记我正在进行后续加载。从评论中,它实际上是指向同一页面的链接-因此重新加载页面。啊,好的。那么@Nitesh的localStorage
解决方案就更好了。我不知道为什么,但你的代码在我的情况下不起作用,在页面加载后,它不会自动单击表的第一个href。你能在配音后再试吗?它应该会起作用。另外,要重新运行此代码。使用localStorage.clear()重置本地存储。我用这段代码解决了我的问题!非常感谢
<script>
var $link = $('td a:first');
if(window.location.href.indexOf($link.attr('href')) === -1) {
$link[0].click();
}
</script>