2015-09-18 32 views
0

我試圖做的目標是自動化我的工作流程。它收集該頁面的具體細節,同時生成一個goo.gl縮短的網址,然後將其封裝到警報中以便於處理。當我將JavaScript放入書籤時,它會在嘗試執行下面記錄的錯誤時掛起。但是,當我將它直接放入控制檯時,它的工作原理如下。

不確定解決方案會在這裏,有什麼想法?
Uncaught TypeError: Cannot read property 'setApiKey' of undefined從javascript書籤掛起的jQuery + ajax調用

測試網址爲腳本:

控制檯從書籤跑時拋出此錯誤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/的文檔錯誤似乎是合法的。

一旦加載了腳本,但未必執行該回調。

你應該看看文件就在這些以下鏈接

dev jscript提出的JavaScript庫的適當整合,samples

但是我想你可以通過加載庫解決您的問題,並提供一個回調函數的引用,這個引用在庫被加載和執行後會被執行。

我認爲你應該做的是包裝需要在回調函數GAPI實例位,說gapiIsLoaded像這樣

function gapiIsLoaded() {   

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

..和點getScript加入功能,該網址,而不是

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,筆者走訪了您提供的網址,而它只是拋出一些404錯誤的select.js。您能否指定您在所提到的網頁上發生此錯誤的位置?

+0

我還沒有測試過我提出的解決方案,因爲您已經正確地說明了解決方案「似乎正確」,根據我所引用的文檔來判斷:) – Filip