Facebook Like Button - Làm cách nào để tắt bình luận bật lên?


107

Tôi muốn tắt Hộp bình luận bật lên khi người dùng nhấp vào nút Thích trên Facebook (fbml) mà tôi đã đặt trên trang web của mình. Đây có phải là có thể làm gì? Tôi không thể tìm thấy bất kỳ chi tiết nào trong tài liệu.


2
Không thể tìm thấy câu trả lời cho bạn. Bạn có coi "Like Box" là một công việc không? Develop.facebook.com/docs/reference/plugins/like-box . Bạn có thể tắt "Show Stream" và "Show Header", đồng thời đặt "Connections" thành 0 và nó giúp đánh dấu kết quả có kích thước hợp lý.
zombat

Tôi đã thêm một câu trả lời mà tôi tìm thấy như một giải pháp thay thế.
BrynJ,

Câu trả lời:


125

Cách khắc phục đơn giản nhất để ẩn hộp bình luận sau khi Thích Facebook (phiên bản XFBML không phải iframe) như đã cho:

.fb_edge_widget_with_comment span.fb_edge_comment_widget iframe.fb_ltr {
    display: none !important;
}

Đặt kiểu CSS vào bất kỳ tệp CSS nào của bạn và thấy điều kỳ diệu, nó hoạt động :)


Cảm ơn Jonathan dù tôi amn't là tốt nhất :) Tôi đấu tranh trên cùng và chỉ cố gắng ra quyết tâm sử dụng CSS thay vì tìm kiếm các giải pháp ưa thích và nó làm việc 'like a charm' :)
Mohammad Arif

8
Không ai nghĩ câu trả lời của BrynJ có thể là tốt nhất? Nếu facebook thay đổi các lớp của họ trong đánh dấu, phương thức này sẽ bị phá vỡ.
tybro0103

Thật ngạc nhiên là vẫn chưa có bất kỳ tùy chọn nào, nơi bạn thực sự có thể tắt cửa sổ bật lên nhận xét. Hoạt động tuyệt vời.
Nhắn tin vào

@tybro, nếu tên lớp thay đổi do bất kỳ cơ hội nào từ Facebook kết thúc thì tất nhiên người ta cũng có thể thay đổi quy tắc dễ dàng từ CSS, nó không yêu cầu bất kỳ loại thay đổi chức năng nào, đó là cách sửa dễ nhất để ẩn cửa sổ bật lên nhận xét cho đến khi thời gian FB không làm cho nó có thể cấu hình được.
Mohammad Arif

14
Điều này không làm việc cho tôi như của ngày 12 tháng 2 năm 2013. Đã phải sử dụng giải pháp Kotzilla của
Bashevis

81

Đặt iframe trong một div có kích thước thích hợp với phần tràn được đặt thành ẩn đã giải quyết được vấn đề này - mặc dù điều này chỉ thực sự ẩn vấn đề như vậy.


5
Tôi buồn cười là anh chàng kia đã nhận được tất cả các phiếu bầu. Có lẽ phương pháp của anh ấy tiết kiệm được ba phút, nhưng nếu facebook thay đổi lớp của họ thì nó sẽ bị hỏng.
tybro0103

@tybro Bạn có thể thêm lớp vào thẻ fb và tạo kiểu cho thẻ, vì vậy việc fb thay đổi lớp sẽ không ảnh hưởng đến mã của bạn.
Gangesh

1
@Gangesh Ừm không, bạn không thể. Đánh dấu đến trực tiếp từ Facebook mà bạn không có quyền kiểm soát.
tybro0103

@ tybro0103, tôi đã thêm một phương pháp mà sẽ không phá vỡ ngay cả khi FB thay đổi lớp học của họ
Zorox

Cảm ơn bạn rất nhiều @BrynJ
Abhishek

69

Tôi sử dụng cái này trong CSS của mình:

.fb-like{
    height: 20px;
    overflow: hidden;
}

và hiển thị nút Facebook bằng mã HTML5 bình thường, giống như sau:

<div class="fb-like" data-layout="button_count" data-show-faces="false"></div>

gr-


4
Sau khi thử các giải pháp khác, giải pháp này hoạt động tốt nhất. Iframe không phù hợp vì tôi cần đăng ký sự kiện edge.create. Việc hiển thị lại thẻ div trong trình xử lý sự kiện edge.create có một chút độ trễ với nó. Giải pháp CSS khác sử dụng ".fb_edge_widget_with_comment span.fb_edge_comment_widget iframe.fb_ltr" cũng không hoạt động với tôi.
CodeWarrior

Đây là cái duy nhất làm việc cho tôi. Tôi đang sử dụng phương pháp nhúng không phải iframe như.
TK123

4
Không thực sự hoạt động (tháng 1 năm 2014). Nó không vô hiệu hóa hộp bình luận mà nó chỉ ẩn nó. Nếu bạn nhấn nút Thích (hãy cẩn thận làm mới trang của bạn sau khi bỏ đánh dấu liên kết bạn đang thử nghiệm) và sau đó bắt đầu nhập, <div>kích thước vẫn giữ nguyên nhưng hiển thị hộp nhập văn bản, sau đó nhấn tab và các nút ĐóngĐăng sẽ hiển thị . Không tốt. Tôi đang thử nghiệm với Firefox.
Annabel

yeeeaaahh, giải pháp này thực sự hiệu quả, cảm ơn bạn !!
Michael

14

Những gì tôi đã làm là đóng một div cho nút "thích" như thế này:

<div class="fb_like">
  <fb:like href="yourlink" send="false" layout="button_count" width="90" show_faces="false" font="arial"></fb:like>
</div>

Và đây là CSS:

.fb_like {  
  overflow: hidden;
  width: 90px;
}

4
Đây thực sự là cách giải quyết tốt nhất mà tôi tìm thấy. Nếu bạn sử dụng bố cục số hộp, hãy sử dụng CSS sau: .fb-like {tràn: ẩn; chiều cao: 61px; } Bạn sẽ chỉ thấy một cái khía nhỏ trên nút thích nhưng bạn sẽ không còn thấy khó chịu bởi cửa sổ bật lên ngu ngốc này nữa.
NicolasBernier

Đối với chủ đề tối thiểu Shopify, sử dụng này của một gói div làm việc trên cả web và điện thoại di động, trong khi chỉ cách ghi đè các fb-like lớp làm việc trực tiếp trên web, nhưng không di động (do lớp phương tiện cụ thể thêm được bao gồm)
gamozzii

9

Tôi thích giải pháp của Mohammed Arif và tôi chọn nó là câu trả lời tốt nhất. Nhưng trong trường hợp FB đổi lớp, thì bên dưới sẽ luôn hoạt động ..

FB.Event.subscribe('edge.create', function(response) {
   $('#like_button_holder').html('<div class="fb-like" data-href="http://www.your-url.com" data-send="false" data-layout="button_count" data-width="50" data-show-faces="false"></div>')
   FB.XFBML.parse();
});

trong đó "like_button_holder" là id div "CỦA BẠN" giữ mã nút like facebook


4
Tôi đã sử dụng giải pháp này vì với các kiểu css, tôi không thể ẩn một div trong iframe.
Pons

điều này thực sự thông minh, tuy nhiên, những nhận xét hộp có thể được nhìn thấy trong thời gian rất ngắn
pinkdawn

1
Tôi sẽ không gọi đây là một giải pháp tốt "thực sự thông minh" - nó liên quan đến việc xóa đánh dấu nút Thích (nhưng làm mất một số mã xử lý sự kiện), tạo một bổ sung mới cho DOM, tái tạo DOM của toàn bộ trang cho XFBML và tạo lại một nút Thích mới, có nghĩa là có nhiều trình xử lý sự kiện hơn, sơn lại và chỉnh sửa lại, một vài yêu cầu mới, v.v. Tôi thực sự gọi đây là một giải pháp tồi hoặc có lẽ không phải là một giải pháp vì những gì bạn đang làm giống như nâng cấp trình duyệt của bạn bằng cách mua một máy tính mới.
AndrewF

1
Có một ý tưởng tốt hơn? Nếu không thì hộp bình luận chết tiệt đó sẽ không biến mất.
Amalgovinus

@AndrewF - ý tưởng tốt hơn vậy?
Jeremy Haile,

5

Các giải pháp sạch hơn mà làm việc (tính đến tháng 5 năm 2014 ) -

  1. Trước hết đảm bảo sự <div class="fb-like"dữ liệu bố trí tài sản như nút -

    <div class="fb-like" data-layout="button"........></div>
    
  2. Chỉ cần thêm CSS này-

    .fb-like{
       overflow: hidden !important;
    }
    

Đó là nó!

Bản giới thiệu


4

Không làm Debby Downer ở đây mà không ẩn ô bình luận có vi phạm Chính sách của Facebook không?

IV. Điểm tích hợp ứng dụng d. Bạn không được che khuất hoặc che đậy các yếu tố của plugin xã hội của chúng tôi, chẳng hạn như nút Thích hoặc plugin hộp Thích.

https://developers.facebook.com/policy/


1
Điều đó không cung cấp câu trả lời cho câu hỏi. Vui lòng nhận xét bổ sung như một bình luận.
Trinimon

2
Thật là mỉa mai - đó là hộp bình luận f * cking đang ẩn nút thích của tôi !!
Amalgovinus

3

Tôi không thể có display: nonetùy chọn để làm việc với phiên bản HTML 5 của nút. Thay vào đó, tôi đã nhắm mục tiêu div mà nút nút like được tạo và đặt phần tràn thành ẩn.

Bỏ thông tin sau trong tệp css chính của tôi đã thực hiện thủ thuật:

#fb_button{
    overflow:hidden;
}

3

Đồng ý với BrynJ, giải pháp tốt nhất hiện tại là đặt nút like trong vùng chứa div cao 20px và đặt phần tràn thành ẩn (Tôi đọc ở đâu đó rằng FB gần đây đã chuyển phần bình luận vào iFrame, vì vậy giải pháp điều chỉnh kiểu của . fb_edge_widget_with_comment có lẽ không còn hữu ích cho người dùng iFrame).

Sử dụng AddThis? Làm cái này:

<div class="container" style="height: 20px; overflow: hidden;">
  <div class="addthis_toolbox addthis_default_style">
    <a class="addthis_button_facebook_like"></a>
  </div>
</div>

Có thể xác nhận rằng giải pháp vùng chứa div 20px là giải pháp duy nhất hoạt động.
Bashevis

2

Nếu nút thích biến mất khi bạn nhấp vào "thích" và bạn có một div vùng chứa để ẩn cửa sổ bật lên nhận xét, thì hãy sử dụng giải pháp sau:

tạo một div vùng chứa để đặt nút giống fb vào và cung cấp cho nó đoạn css sau:

.fb_like {
  overflow: hidden;
  width: 90px;
}

.fb_like iframe {
  left: 0 !important;
}

2

Thay vào đó, tôi đã tránh được sự cố bật lên nhận xét nút like Facebook bằng cách triển khai phiên bản IFRAME. Tôi đã thực hiện các bước sau để làm như vậy:

  1. Truy cập https://developers.facebook.com/docs/plugins/like-button/
  2. Thay đổi 'URL thành Thích' thành URL trang Facebook của bạn
  3. Chọn bất kỳ tùy chọn nào khác (Bố cục, Loại hành động, v.v.) như mong muốn
  4. Nhấn nút 'Lấy mã'
  5. Chọn phiên bản IFRAME
  6. Đảm bảo bạn chọn ứng dụng Facebook của mình có dòng chữ 'Tập lệnh này sử dụng ID ứng dụng của ứng dụng của bạn'
  7. Triển khai mã được cung cấp trong ứng dụng của bạn

Từ những gì tôi có thể thấy, nút thích với triển khai IFRAME không kích hoạt bất kỳ cửa sổ bật lên nào. Nó chỉ đơn giản có chức năng như một nút like. Đây là kết quả mong muốn của tôi.

Chúc may mắn.


Nếu bạn không cần người nghe sự kiện, đây là câu trả lời chính thức tốt nhất. Cảm ơn anh bạn !!
Yahel

1

Đây là mã để nút Thích hoạt động như một nút tiêu chuẩn cùng với Twitter và Linkedin. Hy vọng nó giúp.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>FB</title>


<style>
.social ul { overflow: hidden; margin:0; padding:0; list-style: none; } 
.social ul li { float: left; margin-right: 10px; }
</style>

</head>

<body>
<div id="fb-root"></div>

<div class="social">

    <ul>
        <li class="facebook">   
            <iframe src="//www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.smh.com.au&amp;send=false&amp;layout=button_count&amp;width=45&amp;show_faces=false&amp;font&amp;colorscheme=light&amp;action=like&amp;height=21&amp;appId=333450970117655" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:48px; height:21px;" allowTransparency="true"></iframe> 
        </li>
        <li class="twitter">
            <a href="https://twitter.com/share" class="twitter-share-button" data-url="http://www.smh.com.au" data-count="none">Tweet</a>
        </li>
        <li class="linkedin">
            <script type="IN/Share" data-url="http://www.smh.com.au/"></script>
        </li>
    </ul>
</div>

<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=333450970117655";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');
</script>

<script src="//platform.linkedin.com/in.js" type="text/javascript">lang: en_US</script>

</body>
</html>

Thật tuyệt, đây là giải pháp tốt nhất mà tôi đã thử từ trang. Cảm ơn LẠI @Rafael.
Stuart

1

Hãy thử cái này:

FB.Event.subscribe('edge.create', function(response) {
    var $parent =  $('[href="'+response+'"]').parent();
    $parent.empty();
    $parent.html('<fb:like href="'+response+'" send="false" layout="button_count" width="120" show_faces="false" action="like"></fb:like>');
    FB.XFBML.parse();
 });

1

Như tôi đã làm ổn, cửa sổ bật lên nhận xét sẽ bị tắt khi:

  1. Hiển thị khuôn mặt: -> bỏ chọn nó
  2. Nhận mã: -> chọn tùy chọn IFRAME

1

Nếu bạn sử dụng nút HTML5 mới hơn, và bạn nên vì nó tương thích về phía trước và được Facebook đề xuất, thật dễ dàng, đi ngược lại những gì người khác đã nói:

.fb-like, .addthis_button_facebook_like
  height: 25px
  overflow: hidden

Lớp thứ hai là phần thưởng cho những người sử dụng plugin AddThis.


0

Các tùy chọn chiều cao tràn được đề cập ở trên không nên được sử dụng khi show-faces=true. Nếu không, nó sẽ ẩn các khuôn mặt.


0

Trong trường hợp của tôi (với phiên bản XFBML), tôi đã thêm vào thẻ này:

width="90" height="20" style="overflow: hidden;"

Vì vậy, kết quả cuối cùng là:

<fb:like data-href="URL" send="false" layout="button_count" width="90" height="20" style="overflow: hidden;" show_faces="false" colorscheme="light" action="like"></fb:like>

Nó ẩn chính xác cửa sổ bật lên bình luận.


0

Ẩn hộp nhận xét hoạt động nhưng có thể tạo ra vấn đề nếu bạn có phần tử có thể nhấp phía sau hộp phát nhận xét.

Bạn phải ẩn nó và xóa nó khỏi bài đăng DOM như.

Đây là CSS để ẩn hộp nhận xét:

.fb_edge_widget_with_comment span.fb_edge_comment_widget iframe.fb_ltr {
    display: none !important;
}

Đây là cách JQuery xóa phần tử DOM:

 FB.Event.subscribe('edge.create', function (href, widget) {        
    $('.fb_edge_comment_widget.fb_iframe_widget').remove()       
});

Đây là cách javascript thuần túy bằng cách sử dụng tiện ích con được cung cấp từ lệnh gọi lại:

FB.Event.subscribe('edge.create', function (href, widget) {
    widget._commentWidgetNode.parentNode.removeChild(widget._commentWidgetNode);        
});

Làm cách nào để tạo quy tắc css cho nội dung khung trên một miền khác? Hãy để một mình các lớp css có tên sẽ khác vào tháng tới?
Amalgovinus

0

Nếu bạn chỉ muốn hiển thị nút thích, bạn có thể thử một cái gì đó như thế này

HTML:

<div class="fb_like">
    <div class="fb-like" data-href="http://google.com" data-send="false" data-layout="button_count" data-width="450" data-show-faces="false"></div>
    <div class="like_counter_hider"></div>
</div>

CSS:

.fb_like {
    overflow: hidden;
    width: 80px;
    height: 20px;
}
.like_counter_hider {
    position: absolute;
    top: 0;
    left: 45px;
    width: 35px;
    height: 20px;
    background-color: #f3f3f3; /*you'll have to match background color*/
    z-index: 200;
}

0

Đặt tràn thành ẩn có thể hữu ích. Thực hiện việc này trong tệp css chính của bạn ..

#fb_button{
overflow:hidden;
}

0

Bạn chỉ cần làm cho khung nội tuyến chứa nút thích có cùng kích thước với nút:

.fb_iframe_widget_lift
{
    width: 49px !important;
    height: 20px !important;
}

Đó là nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.