1

このコードは Firefox では機能しますが、Safari では機能しません。

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

ピンタレスト ボタンがクリックされると、その画像のクリック イベントが作成されます。

<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のコードをトリガーするはずが機能しません。私は同じ問題を抱えている他の人を見つけましたが、彼らの解決策はどれも私にとってはうまくいきません。また、ブラウザーが一番上にスクロールする理由もわかりません。ああ、そうです。画像を直接クリックすると機能します。

4

2 に答える 2

1

この問題は、次の 2 つの原因で発生する可能性があります

1.リスナーをアタッチしたとき、DOM はまだ準備ができていません

2. HTML コードが動的に追加されます

最初のケースの解決策は、コードを ready ブロックの下に置くことです

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

2 番目のケースの解決策は、変更に対してリスナーをライブにすることです。

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

必要に応じて、オンクリックを画像リスナーに追加します

これが役立つことを願っています

于 2013-02-24T12:01:18.417 に答える