当Facebook,Google +或类似服务被用户阻止时附加文字的Javascript

时间:2012-03-22 15:44:05

标签: javascript facebook google-plus

如果有人使用像Ghostify这样的浏览器插件访问我的网站,我的Google+,Facebook等按钮就会消失。所以我想我应该编写一些Javascript来检查这些是否根据选择器内容加载,或者选择器是否存在,具体取决于各个元素的HTML ...然后附加一些文本而不是按钮

    $(document).ready(function () {

    /// Google+ : I check if it's div that was left has any content
    if ($(".g-plusone").html().length < 1 ) {
        $(".g-plusone").append('<p>Google+1 Blocked</p>');
    }

    /// Facebook I check if the widget selector even exists
    if (!$(".fb_iframe_widget").length) {
        $(".fb-like").append('<p>Facebook Like button blocked</p>');
    }   

    });

这似乎有效,除了Firefox 11 +之外,它似乎仍适用于所有浏览器。

我无法弄明白,因为它有时会加载附加的Facebook文本,即使div存在。有时它会正常加载facebook按钮。

换句话说,即使firefox中没有阻塞,附加脚本也会触发。

有什么想法吗?

干杯

2 个答案:

答案 0 :(得分:1)

在摆弄了几个小时后,我当然想起了RTFM方法并转到了jquery文档。

在此之前,我尝试使用.load()而不是.ready()。我想如果在我的脚本之前加载了所有页面,那就不可能它不起作用了。但它没有用。

现在在我注意到我正在使用

的文档之后
  $(document).load(function ()

但我真正需要的是

  $(window).load(function ()

DUH!广泛测试似乎现在一切正常。当插件阻止按钮时,我的IF语句将其拾取并显示一些文本,否则它们显示正常。

这是当前运行良好的代码,我需要稍后整理,尽可能优化和填充

    $(window).load(function () {

    var gplus = $("#node_movie_full_group_sharebuttons .g-plusone").html().length;
    var fejs = $("#node_movie_full_group_sharebuttons .fb_iframe_widget").length;
    var disq = !$("#dsq-content").length;

    if (gplus < 1) {
        $(".g-plusone").append('<p>Google+1 Blocked</p>');
        $(".field-name-sharebuttonsmovie .field-item").css("top", 0);
    }
    if (fejs < 1) {
        $(".fb-like").append('<p>Facebook Like button blocked</p>');
        $(".field-name-facemovie .field-item").css({ 'top': '0', 'left': '0' });
    }
    if (disq) {
        $("#disqus_thread").append('<p>Something is blocking the Disqus comments system</p>');
    }

});

答案 1 :(得分:0)

我猜想Firefox上的插件会删除.g-plusone.fb-like个项目。

将G +和FB小部件包装在始终存在的div中。使用与&#34; g-plus&#34;充分不同的ID和/或css类。和&#34; fb&#34;所以,过度热心的插件也不会删除你的div。