1

这种小小的代码和平在 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 覆盖物制作的。哦,是的:直接点击图片即可。

4

2 回答 2

1

这个问题可能是由两件事引起的

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);
        });
    }); 

并在需要时将 on click 添加到您的图像侦听器

我希望这可以帮助

于 2013-02-24T12:01:18.417 回答
0

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

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

于 2020-06-03T16:26:52.490 回答