2012-11-22 57 views
1

只有當HTML文檔的一部分可見時,我纔想繼續執行特定的javascript函數。這意味着當該部分不再可見時,停止執行功能。當部分HTML當前可見時,如何持續執行Javascript函數?

走出可見範圍意味着元件是方式:

  • 滾動出來(垂直或水平)
  • 改變爲一些其他的瀏覽器標籤
  • 標籤/窗口關閉/整個瀏覽器。

示例代碼: 我有HTML與樣式,以確保我有格主(整個頁面)和DIV的目標就是我的下清晰可見範圍屏幕(1920×1080)上:

<html> 
<head> 
    <title>Title</title> 
<style type="text/css"> 
    #main{ 
     height: 2300px; 
    } 
    .target{ 
     border: 1px solid black; 
     position: relative; 
     top:1000px; 
     width:150px; 
     height: 150px; 
    } 
</style> 
<script scr="js/jquery.js"></script> 
</head> 
<body> 
    <div id="main"> 
     <div class="target"></div> 
    </div> 
</body> 
</html> 

什麼是JS/jQuery代碼,將命令:

當div.target是目前創建my_function可見觸發器執行()

當div.target滾出或標籤更改時,停止執行my_function()

+2

我會說連續執行的腳本會在一段時間後發生錯誤。如果執行腳本,也不可能滾動頁面。 – Teemu

+0

@Teemu:我見過這樣的解決方案。爲什麼在腳本執行後我無法在頁面上滾動頁面? –

+1

@Teemu你可以使用'setInterval',這樣函數就不會被繼續調用,而是會週期性地發揮作用,而不會阻塞UI。或者在後臺工作人員中運行它。 (取決於函數中的內容)。 Ahren暗示,isVisible部分有點棘手。 ':visible'檢測不到視圖滾動。也許[這](https://groups.google.com/forum/?fromgroups=#!topic/pdxjs/fO-3ApxbgRQ)將有助於 – VDP

回答

1

好的,我知道這是一個不好的回答方法。標準是關閉這個問題,並指出重複的問題,但這個問題有兩個部分和兩個單獨的答案。所以,我把鏈接到這裏的答案:

第1部分:檢測當一個HTML元素是不是在滾動視圖

Check if element is visible after scrolling

第2部分:檢測時,標籤不鑑於

How to tell if browser/tab is active

上述的兩個似乎有工作的答案。只是實現兩個來得到你想要的。

相關問題