2012-08-17 107 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