сделать кнопки Reddit асинхронными - PullRequest
2 голосов
/ 05 февраля 2012

Я пытаюсь добавить кнопки Reddit на свой сайт, но они не асинхронные, а Reddit имеет тенденцию отставать, замедляя загрузку страниц. Когда я смотрю, что возвращает скрипт, я получаю что-то вроде этого:

(function () {
    var write_string = ...
    document.write(write_string);
})()

Я пытаюсь вставить его на свою страницу после загрузки страницы. Я пробовал оба эти метода в JavaScript после загрузки страницы безрезультатно:

placeholder.innerHTML = '<script type="text/javascript" src="http://www.reddit.com/buttonlite.js?i=5"></script>'

var js = document.createElement('script');
js.type = 'text/javascript';
js.src = 'http://www.reddit.com/buttonlite.js?i=5';
placeholder.appendChild(js);

, где placeholder - элемент DOM <div class="reddit-button"></div>. Любые идеи о том, как я мог бы пойти по этому поводу?

1 Ответ

1 голос
/ 05 февраля 2012

Вы можете "переопределить" метод document.write:

window.onload = function() {
    var oScript = document.createElement("script");
    document.write = function(text) {
        document.getElementById("placeholder").innerHTML += text;
    };
    oScript.src = "http://www.reddit.com/buttonlite.js?i=0";
    document.body.appendChild(oScript);
};

Таким образом, внешний код может вызывать document.write столько, сколько он хочет, и вы помещаете HTML-код в нужное место в документе.

Тестовый пример в реальном времени - Проверено нормально в Chrome, Firefox и IE9, поэтому думаю, этого должно быть достаточно.

...