Почему кнопка «Нравится» Facebook не учитывает свои параметры при вставке через JavaScript? - PullRequest
1 голос
/ 03 ноября 2011

Я только что обнаружил, что версия iframe кнопки «Нравится» Facebook не учитывает параметры запроса при создании iframe с помощью JavaScript, а не включается непосредственно в HTML документа.

Пожалуйста, посмотрите на этот jsFiddle, который я создал:

http://jsfiddle.net/qQsCC/

Я сгенерировал кнопку «Мне нравится» по указанному выше URL-адресу и сначала включил HTML в точности так, как он был предоставлен. Затем я разбил его на код JavaScript, необходимый для создания и добавления идентичного элемента в DOM.

В окне «Результат» вы увидите HTML-версию кнопки вверху и созданную на JavaScript версию ниже. Хотя значение атрибута src одинаково для обоих (а также для всех других атрибутов HTML), нижняя кнопка, кажется, не учитывает ни один из параметров, которые я передал, например colorscheme или font.

Кто-нибудь знает, почему это происходит, или есть какие-либо предложения о том, как мне избежать этого поведения?

Сценарий использования здесь заключается в том, что я создаю HTML-рекламу, которая будет включать в себя iframe-версию кнопки «Мне нравится»; требование заключается в том, что объявление может изначально загружать только 50 КБ данных, затем до 1 МБ после срабатывания window.onload. Поскольку кнопка «Мне нравится» весит более 50 КБ, мне нужно создать iframe с использованием JavaScript после window.onload, а не просто включать элемент <iframe> в HTML объявления.

1 Ответ

1 голос
/ 04 ноября 2011

Когда вы добавляете URL с помощью HTML, HTML-сущности автоматически декодируются.Это не nappen в JavaScript.Поэтому вам нужно декодировать URL-адрес перед его передачей в javasript, например:

like.src = 'http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.facebook.com%2F&send=false&layout=standard&width=450&show_faces=false&action=like&colorscheme=dark&font=arial&height=35';

Надеюсь, это поможет

Обновлен JSfidle: http://jsfiddle.net/qQsCC/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...