.click()在Safari中不起作用

时间:2013-02-24 11:53:56

标签: jquery safari click

这种小小的代码安静在Firefox中有效,但不适用于Safari:

$('.pinterest-button').click(function() {
    $('.pinterest-button').hide();
    $('#pin1 a img').click();
    setTimeout("$('.pinterest-button').show();", 1000);
});

如果单击了pinterest按钮,它应该为该图片创建一个点击事件:

<div id="pin1" class="gallery span24 offset6">
   <a class="span24" alt="" title="bild" href="javascript:void((function()%7Bvar%20e=document.createElement('script');e.setAttribute('type','text/javascript');e.setAttribute('charset','UTF-8');e.setAttribute('src','http://assets.pinterest.com/js/pinmarklet.js?r='+Math.random()*99999999);document.body.appendChild(e)%7D)());">
      <img class="gallery-img" src="http://www.goldentree.de/wordpress/assets/bild.jpg">
   </a>
</div>

如果我单击Safari中的按钮,它将被隐藏,页面会滚动到顶部,因此点击本身可以正常工作,但我认为$('#pin1 a img')。click();应该触发图像中的代码href不起作用。我发现其他一些人遇到了同样的问题,但他们的解决方案都没有对我有用,所以我不确定它是否真的无法实现click()。我也不确定,是什么让我的浏览器滚动到顶部,因为我认为这是由pinterest overlay-thing制作的。哦,是的:直接点击图片即可。

2 个答案:

答案 0 :(得分:0)

这个问题可能是由两件事造成的

<强> 1。当你附加监听器时,DOM还没有准备好

<强> 2。您的HTML代码是动态添加的

第一种情况的解决方案是将您的代码放在就绪块

$(document).ready(function(){
    $('.pinterest-button').click(function() {
        $('.pinterest-button').hide();
        $('#pin1 a img').click();
        setTimeout("$('.pinterest-button').show();", 1000);
    });
}); 

第二种情况的解决方案是让听众能够进行任何更改

 $(document).ready(function(){
        $('.pinterest-button').on('click',function() {
            $('.pinterest-button').hide();
            $('#pin1 a img').click();
            setTimeout("$('.pinterest-button').show();", 1000);
        });
    }); 

并根据需要将点击添加到您的图片监听器

我希望这可以提供帮助

答案 1 :(得分:0)

我认为这最像是与Safari本身有关的问题:

https://github.com/webdriverio/webdriverio/issues/4565