2015-09-18 2 views
0

Цель, которую я пытаюсь сделать, - автоматизировать мой рабочий процесс. Он собирает конкретные детали этой страницы, также генерирует сокращенный URL-адрес goo.gl, а затем обертывает его в предупреждение для легкой обработки. Когда я помещаю свой javascript в закладку, он зависает при попытке выполнить с документированной ошибкой ниже. Но когда я помещаю его прямо в Консоль, он работает по назначению.

Не знаете, какое решение будет здесь, какие-нибудь мысли?jQuery + ajax звонок из закладки javascript hanging

Консоль выдает эту ошибку, когда выбежала из закладки:
Uncaught TypeError: Cannot read property 'setApiKey' of undefined

Test Url для сценария: https://hireteammate.com/showajob/index/Litepoint-Software-Release-Engineer-Sunnyvale-CA?job_id=7ccfdb23d6f08156bd41c659f2be0eda

Живой код Использована

javascript: jQuery(document).ready(function($) { 
    /* Description Area */ 
    var title = $(".job_header_title").text(); 
    var company = $("#masthead > div > div.row > div > div.row.job-highlight > div > div:nth-child(1) > div.col-lg-4.col-md-4.col-sm-4.col-xs-12 > div > p:nth-child(3)").text(); 
    var type = $("#aboutjob > div > table > tbody > tr:nth-child(2) > td:nth-child(2)").text(); 
    var role = $("#aboutjob > div > div:nth-child(4) > div.panel-body").text(); 
    var job  = (company + " company is looking for a " + title + "/" + type + "\n\n" + role); 


    /* URL AREA */ 
    var user = "DanielW1"; 
    /* var apiKey = "AIzaSyCE2BK7kOhAKLiRd1BIw9rGZqyM6A58Y94"; */ 

    var hireteammate = "https://hireteammate.com/invite/join/" + user + "?callback="; 
    var callbackUrl = encodeURIComponent(window.location.href); 
    var joblink = (hireteammate + callbackUrl); 
    var longurl = joblink; 

    $.getScript("https://apis.google.com/js/client.js", function(textStatus, jqxhr) { 
    /* console.log(textStatus +" "+ jqxhr.status + " Load was performed.");*/ /* Success */ 
     gapi.client.setApiKey("AIzaSyCE2BK7kOhAKLiRd1BIw9rGZqyM6A58Y94"); 
     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) { 
        console.log('Error. ' + resp.error.message); 
       } else { 
        alert(job + "\n\n" + resp.id); 
       } 
      }); 
     }); 
    }); 
}); 

ответ

0

Из того, что я читаю в документация https://api.jquery.com/jquery.getscript/ ошибка кажется законной.

Обратный вызов запускается после загрузки сценария, но не обязательно выполняется.

Вы должны взглянуть на документации относительно правильной интеграции библиотеки JavaScript, представленной по этим следующим ссылкам

dev jscript, samples

Однако я думаю, что вы могли бы решить вашу проблему путем загрузки библиотеки и предоставляя ссылку функции обратного вызова, которая будет выполняться после загрузки и выполнения библиотеки.

Я думаю, что вы должны сделать, это обернуть биты, требующие экземпляра Gapi в функции обратного вызова, скажем, gapiIsLoaded как так

function gapiIsLoaded() {   

    gapi.client.setApiKey("AIzaSyCE2BK7kOhAKLiRd1BIw9rGZqyM6A58Y94"); 
    gapi.... 
} 

..и указывают функцию getScript на этот URL вместо

https://apis.google.com/js/client.js?onload=gapiIsLoaded

0

Filip кажется правильным. Уже идет разговор по этому вопросу.

jQuery getScript load vs execution

Ниже OnLoad обратный вызов должен решить вопрос:

https://developers.google.com/api-client-library/javascript/dev/dev_jscript

Nways, я посетил URL вы предоставили, и его просто бросали некоторые 404 ошибки для select.js. Не могли бы вы указать, где именно вы получаете эту ошибку на упомянутой веб-странице?

+0

Я не тестировал решение, которое я предложил, поскольку вы правильно заявили, что решение «кажется правильным», судя по документации, на которую я ссылался :) – Filip