2012-08-17 103 views
0

好吧,這是我的問題: 我試圖通過檢查Facebook按鈕是否被點擊來觸發重定向。 如果點擊了它,我可以繼續檢查某個div是否具有某個類。如果它在任何時候評估爲真,它將觸發重定向。 但它沒有這樣做。hasClass()在setInterval中沒有評估爲true

我使用setInterval的原因是,它必須在頁面加載時檢查它,並且如果他們已經喜歡它,請不斷檢查。

這裏的HTML:

<div class="pluginConnectButton"> 

<div title="" class="pluginButton pluginButtonSmall pluginConnectButtonDisconnected hidden_elem"> 
    <div> 
    <button type="submit"> 
    <i class="pluginButtonIcon img sp_like sx_like_fav"></i>Like 
    </button> 
    </div> 
</div> 

<div title="" class="pluginButton pluginButtonSmall pluginButtonPressed pluginButtonX pluginConnectButtonConnected"> 

<div> 
<button type="submit"> 
<i class="pluginButtonIcon pluginButtonXOff img sp_like sx_like_ch"></i> 
<i title="" class="pluginButtonIcon pluginButtonXOn img sp_like sx_like_x"></i> 
</button>Like 
</div> 

</div> 
</div> 

這裏的JS/jQuery的:

setInterval(

function(){ 
if ($('div.pluginConnectButton div').eq(0).hasClass('hidden_elem')) { 

    window.open('http://thebasinhaircutters.com.au/competitions/abd/m/next.php', '_parent'); 

}} 

,1000); 
+0

您可以不使用JavaScript SDK並訂閱edge.create事件https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/ – TommyBs 2012-08-17 07:21:50

+0

如果該「if」測試爲真,它會不會每秒打開額外的窗戶? – nnnnnn 2012-08-17 07:31:06

+0

不,它不會創建新窗口,它會在現有窗口中打開(重定向,而不是彈出窗口)。 – 3Dom 2012-08-17 07:37:14

回答

1

它的工作原理基於這個測試?

var interval = null; 
$(function() { 
    interval = setInterval(function() { 
    if($('input').hasClass('clicked')) { 
     clearInterval(interval); 
     alert('I\'ve been clicked!');​​ 
    } else { 
     console.log('I\'ve not been clicked'); 
    } 
    }, 1000); 
    $('input').click(function() { 
    $(this).addClass('clicked'); 
    }); 
}); 
​ 

實施例:http://jsfiddle.net/gRoberts/8ZXba/

留意在控制檯上看到它經歷的每個間隔,然後點擊按鈕,警報將顯示。

+0

如果他們重新加載頁面或再次訪問它,這將不起作用。 – 3Dom 2012-08-17 07:15:24

+0

我看不到你問題中的任何地方,你指定它應該? – Gavin 2012-08-17 07:19:03

+0

現在已經添加了。如果我不想要那個功能,setInterval函數將毫無意義。 – 3Dom 2012-08-17 07:29:57