Javascript, который добавляет текст, когда пользователи заблокировали Facebook, Google+ или подобные сервисы. - PullRequest
0 голосов
/ 22 марта 2012

Если кто-то заходит на мой сайт с подключаемым браузером, таким как 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 ]

1 голос
/ 23 марта 2012

После долгих часов игры я запомнил метод 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>');
    }

});
0 голосов
/ 22 марта 2012

Я предполагаю, что плагины в Firefox удаляют элементы .g-plusone и .fb-like.

Оберните виджеты G + и FB в div, которые всегда есть.Используйте классы id и / или css, которые достаточно отличаются от классов "g-plus" и "fb", чтобы чрезмерно усердные плагины также не удаляли ваш div.

...