2017-07-31 128 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

我用這段代碼解決了我的問題!非常感謝 –