Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получение количества комментариев из сервиса cackle.ru (https://javascript.ru/forum/misc/26563-poluchenie-kolichestva-kommentariev-iz-servisa-cackle-ru.html)

iskiz 13.03.2012 07:08

Получение количества комментариев из сервиса cackle.ru
 
Здравствуйте посетители форума.
Есть такой опенИД сервис комментариев как "cackle.ru"

Я заметил у них такой вот способ получения количества комментариев из новости:

<script src="http://cackle.ru/widget/2865/countComments?callback=?&amp;chan=ссылка на страницу сайта" type="text/javascript"></script>


Я вставил этот код в краткую новость. Но там есть такая загвоздка - если одновременно делается более 11 запросов, а кратких новостей больше на странице, то отдает ошибку 503. Вот тут мне и пришла мысль сделать вывод скрипта по случайному таймауту.

У меня получился вот такой код:

setTimeout(function(){
var script = document.createElement('script');
script.src = "http://cackle.ru/widget/2865/countComments?callback=?&amp;chan=ссылка на страницу сайта";
document.getElementById("comment").appendChild(script);
}, Math.floor(Math.random()*2000));


Но в консоли браузера я теперь вижу ошибку: "Resource interpreted as Script but transferred with MIME type text/html"

Подскажите что не так? Или может я вообще не с той стороны подхожу к этому вопросу? Спасибо.

melky 13.03.2012 10:46

script.type = "text/javascript";

и mime-type у файла со скриптом выставьте

iskiz 13.03.2012 16:34

Цитата:

Сообщение от melky (Сообщение 162820)
script.type = "text/javascript";

и mime-type у файла со скриптом выставьте

Сделал так:
setTimeout(function(){
var script = document.createElement('script');
script.src = "http://cackle.ru/widget/2865/countComments?callback=?&amp;chan=ссылка на страницу.html";
script.type = "text/javascript";
document.getElementById("comment").appendChild(script);
}, Math.floor(Math.random()*2000));


Но ошибка та же. Видимо ошибка из-за того, что путь скрипта заканчивается на .html.
Подскажите пожалуйста что делать в этом случае? Спасибо.

Раед 13.03.2012 17:31

Цитата:

Сообщение от iskiz
Видимо ошибка из-за того, что путь скрипта заканчивается на .html.

вряд ли, может это у них там что с заголовками не так

iskiz 13.03.2012 17:43

Я вроде понял в чем ошибка. У меня на странице много div с id=comment и все собранные скрипты вставляются в первый div. Подскажите как сделать, чтобы скрипт вставлялся в тот див, в котором он сейчас находится? Спасибо

nikita.mmf 13.03.2012 17:50

как вариант
<script>
(function (){}(
var scriptList = document.getElementsByTagName("script");
var lastScript = scriptList[ script.length - 1 ];
var container = lastScript.parentNode;
while ( container && container.id != 'comment' ) {
    container = container.parentNode;
}
setTimeout(function(){
    var script = document.createElement('script');
    script.src = "http://cackle.ru/widget/2865/countComments?callback=?&amp;chan=ссылка на страницу.html";
    script.type = "text/javascript";
    container .appendChild(script);
}, Math.floor(Math.random()*2000));

))();
</script>

iskiz 13.03.2012 18:14

C добавлением в нужное место разобрался. Осталось решить дело с ошибкой: "Resource interpreted as Script but transferred with MIME type text/html"

Если скрипт сделать нижним способом, то нет вышеуказанной ошибки. Но я не могу понять как его вставить в нушное место :(. Почему-то через ".append" не выходит.
setTimeout(function(){
    var code = "<scr"+"ipt src='http://cackle.ru/widget/2865/countComments?callback=?&amp;chan=ссылка на страницу.html' type='text/javascript'>;</scr"+"ipt>";
    $("span").append( $("code") );
    }, Math.floor(Math.random()*2000));

Подскажите варианты как устранить ошибку с MIME-TYPE или как второй код вставить? Спасибо.


Часовой пояс GMT +3, время: 13:08.