2015-02-12 17 views
1

im сходит с ума, им не так хорошо на js или html, поэтому PLZ попытается мне помочь. на моем блоге блоггер я хочу 1) Автоматически создать короткую ссылку с помощью Goo.gl услуги 2) разделяет эту короткую ссылку на твиттере его кнопкой JS код им с помощью сделать ссылку короткогоЗначение атрибута тега html от значения javascript

<script type="text/javascript"> 
    var shorturl; 
     var longUrl="http://*****" + "<data:blog.url/>"; 
     var request = gapi.client.urlshortener.url.insert({ 
     'resource': { 
     'longUrl': longUrl 
     } 
     }); 
     request.execute(function(response) 
     { 

     if(response.id != null) 
     { 
      shorturl=response.id; 
     } 
     else 
     { 
      shorturl="<data:blog.url/>"; 
      alert("error: creating short url n"+ response.error); 
     } 
     document.getElementById('shorturlid').setAttribute("data-url",shorturl); 
    }); 
    </script> 

код для кнопки твиттера

<a href="https://twitter.com/share" class="twitter-share-button" id="shorturlid" data-via="*****" data-size="large" data-count="none" data-hashtags="*****">Tweet</a> 
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> 

это просто разделить текущую страницу URL, так что кажется, что мой код ничего не делает.

Любое решение?

ответ

1

Я создал jsfiddle и там я заметил, что вы не можете получить доступ к ссылке с shorturlid после выполнения скрипта twitter.

Потому что он сильно изменяет DOM. Лучший способ сделать то, что вы хотите, - это вызвать скрипт twitter после того, как у вас будет укороченный URL-адрес и добавлен в DOM.

Мой скрипт, похоже, работает, но иногда я получаю следующую ошибку: Error. User Rate Limit Exceeded. не уверен, что это такое. Может быть, если вы слишком часто запускаете скрипт.

(я использовал JQuery Beause это проще создать DOM-элементов. Конечно же, должен работать с чистым JS.)

var longurl = 'http://www.google.com/'; 
var $tw_link; 

gapi.client.load('urlshortener', 'v1', function() { 
    var request = gapi.client.urlshortener.url.insert({ 
     'resource': { 
      'longUrl': longurl 
     } 
    }); 
    var resp = request.execute(function (resp) { 
     if (resp.error) { 
      $("#show").html('Error. ' + resp.error.message); 
     } else { 
      $("#show").html("Short URL for " + longurl + " is: " + resp.id); 
      var shorturl = resp.id; //document.getElementById('shorturlid').setAttribute("data-url", shorturl); // not working because twitter button changes DOM!! 
      $tw_link = $('<a/>'); 
      $tw_link.attr('href', 'http://twitter.com/share'); 
      $tw_link.addClass('twitter-share-button'); 
      $tw_link.attr('data-url', shorturl); 
      //var body = document.getElementsByTagName('body'); 
      $('#show').append($tw_link); 
      console.log(shorturl, $tw_link); 
      loadTwitter(); 
      //alert(shorturl); 
     } 
    }); 
}); 

function loadTwitter() { 
    ! function (d, s, id) { 
     var js, fjs = d.getElementsByTagName(s)[0], 
      p = /^http:/.test(d.location) ? 'http' : 'https'; 
     if (!d.getElementById(id)) { 
      js = d.createElement(s); 
      js.id = id; 
      js.src = p + '://platform.twitter.com/widgets.js'; 
      fjs.parentNode.insertBefore(js, fjs); 
     } 
    }(document, 'script', 'twitter-wjs'); 
}; 
+0

ТНХ и, я вижу свою работу на jsfiddle, но когда я пытаюсь его на мой блог я получаю эту ошибку, не могу прочитать свойство setapykey на этой строке gapi.client.setApiKey (apiKey); Я думаю, что есть ошибка в . Я что-то упускаю? –

+0

Я думаю, что он должен работать без ключа API. Просто прокомментируйте эту строку. Я не уверен, почему вы получаете ошибку. Но в скрипке это без этой линии. – AWolf

+0

теперь та же проблема находится на gapi.client.load ('urlshortener', 'v1', function() {не может прочитать загрузку свойств, поэтому теперь я уверен, что проблема связана с client.js –

Смежные вопросы