0

一日中解決策を見つけようとしていて、それが私を夢中にさせています。XSLT を介してコンパイルされているページがあり、記事の詳細を共有するために Twitter ソーシャル リンクをクリックすると、クリックされたものだけでなく、クラスのすべてのインスタンスに対して新しいウィンドウが開きます。

次のページをご覧になり、Twitter リンクのいずれかをクリックしてください。

http://search.stoneburndemo.com/search?q=a&btnG.x=-564&btnG.y=-178&filter=0&daterange_ddm=all&as_q=&site=default_collection&client=alhayat_production&output=xml_no_dtd&proxystylesheet=alhayat_production&lr=lang_ar&oe=UTF-8&ie=UTF-8&ud= 1&proxyreload=1&sort=date%3AD%3AL%3Ad1&exclude_apps=1&tlen=88

これは私が使用しているコードです:

<script>
$('.twitter_sl').find('a').css('cursor', 'pointer');
$('.twitter_sl').children('a').click(function(){

var twitterOrigURL = $(this).attr('title').replace(/\%20/g, '%2520'),
    twitterURL = twitterOrigURL,
    twitterText = $(this).attr('name');

window.open('http://www.twitter.com/share?text='+twitterText+'&amp;url='+twitterURL,'_blank', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=250,width=600');
});
</script>

HTML マークアップは次のとおりです。

<td class="twitter_sl">
<a title="{$full_url}" name="{T}"><img src="http://daharchives.alhayat.com/images/t_logo.png" alt="Share on Twitter" height="25px" width="25px"/></a>
</td>

Chrome では、ポップアップ ウィンドウの 1 つを除くすべてをブロックしているように見えるため、この問題はいくぶん隠されています。Firefox は、ブロックせずに 10 個の新しいウィンドウを開くことで、問題を最もよく強調しています。

4

2 に答える 2

2
  1. CSS にプレゼンテーション用のものを保持する必要があります。スタイルシートでルールを実行します .twitter_sl { cursor: pointer; }

  2. 次のように、クリック イベントをより詳細に変更できます。

    $('.twitter_sl > a').on('click', function(){
        var that = $(this),
            twitterOrigURL = that.attr('title').replace(/\%20/g, '%2520'),
            twitterText = that.attr('name');
    
        window.open('http://www.twitter.com/share?text=' + twitterText + '&amp;url=' + twitterOrigURL, '_blank', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=250,width=600');
    });
    

編集: ここにフィドルがあります。FF では問題なく動作します。http://jsfiddle.net/5nC4q/3/

于 2013-04-23T18:51:06.607 に答える
0

.each() を使用してリンクを反復処理することで、すべてのリンクに「独自のクリック」があると思います

<script>
$('.twitter_sl').find('a').css('cursor', 'pointer');
$('.twitter_sl').children('a').each(function(){

$(this).click(function(){

var twitterOrigURL = $(this).attr('title').replace(/\%20/g, '%2520'),
twitterURL = twitterOrigURL,
twitterText = $(this).attr('name');

window.open('http://www.twitter.com/share?text='+twitterText+'&amp;url='+twitterURL,'_blank',      'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=250,width=600');
});
});
</script>
于 2013-04-23T18:46:58.157 に答える