2012-02-16 23 views

回答

25

你不能。

您可以下載jsapi.js並將它保存在本地機器中,但它仍然會引用google.com上的聯機版本。你可以通過打開jsapi.js代碼來看到它。

有關更多信息,請參閱this Google developers article

我可以離線使用圖表嗎?

否;您的計算機必須能夠實時訪問 http://www.google.com/jsapi才能使用圖表。這是因爲 頁面需要的可視化庫在使用前動態加載 。加載相應的 庫中的代碼是包含JSAPI腳本的一部分,被稱爲當你 調用的google.load()方法。我們的服務條款不允許你 下載的google.load或google.visualization代碼使用 下線。

我可以下載和本地託管圖表代碼,或Intranet上的?

對不起;我們的服務條款不允許您下載並保存或託管google.load或google.visualization代碼。

+1

「你不行」有區別。和「這可能對...有挑戰性」。請考慮重新說明,因爲確實有可能以離線方式實現此行爲,如某些更具創造性的答案中所述。 – 2017-06-11 04:55:17

1

絕對,雖然只是作爲一個概念證明。只需打開和下面的文件作爲jsapi.js保存到本地計算機:在

<script type="text/javascript" src="jsapi.js"></script> 

看到一個例子:

http://www.google.com/jsapi

然後,從你的HTML頁面添加到它的引用

http://www.marlenynunez.com/files/jsapi/horizontal-news-ticker4.html 從答覆問題 [問題]:jquery horizontal news ticker using google jsapi

但是,正如其他人指出的那樣,您可能仍然需要網絡訪問權限,API的服務條款不允許以這種方式使用。

+1

Finaly,我已經使用PChart [http://www.pchart.net /](http://www.pchart.net/)感謝您的幫助! – Elmux 2012-03-09 19:03:58

+8

但加載時的JSAPI文件作進一步的請求,谷歌UDS,所以如果你是完全脫機 – David 2013-12-21 22:36:41

+0

我曾經嘗試這樣做,這並不工作,但我仍然看到瀏覽器報告'等待www.google.com ...' – Pathros 2015-04-08 19:43:57

12

雖然你可以做到這一點,並dowlnoad jsapi所有其他代碼仍然在谷歌服務器,可視化庫等,它不是在服務方面,它禁止它。

我可以離線使用圖表嗎? 不;您的計算機必須能夠實時訪問http://www.google.com/jsapi才能使用圖表。這是因爲您的頁面需要的可視化庫在使用之前會動態加載。加載相應庫的代碼是包含的jsapi腳本的一部分,並在調用google.load()方法時調用。我們的服務條款不允許您下載google.load或google.visualization代碼以便脫機使用。 我可以在本地或內部網上下載和託管圖表代碼嗎? 對不起,我們的服務條款不允許您下載並保存或託管google.load或google.visualization代碼。

+0

這與現在接受的答案基本相同。請考慮刪除。 – 2017-06-11 05:01:56

2

jsapi.js單獨的文件不會有任何好處,因爲當您使用它載入內容時,它會請求卡車載入其他腳本和css文件。

所以,如果你真的想讓你的應用程序離線谷歌圖表,首先包括jsapi.js在您的應用程序,並通過網絡監控其請求的其他文件(使用像Fiddler)。然後下載它們幷包含在您的應用程序中。記住它可能是一個深深的兔子洞IYKWIM。

另外請記住,以上所有內容使用谷歌的Terms and Conditions使用他們的圖表。

+0

規則被破壞。很好的答案!也可以使用瀏覽器['Cache'](http://devdocs.io/dom/cache)將所有文件保存爲脫機使用,而無需使用HTTP代理。 – 2017-06-11 04:56:51

0

嗨已經使用下面的概念在當地加入anguarjs應用程序的文件和工作正常發展的目的..

/* global angular */ 
(function(){ 
    angular.module('googlechart') 
     .provider('googleJsapiUrl', googleJsapiUrlProvider); 

    function googleJsapiUrlProvider() { 
     var protocol = 'http:'; 
     var url = '//localhost/yourApplicationName/Scripts/chart/jsapi.js'; 

     this.setProtocol = function (newProtocol) { 
      protocol = newProtocol; 
     }; 

     this.setUrl = function (newUrl) { 
      url = newUrl; 
     }; 

     this.$get = function() { 
      return (protocol ? protocol : '') + url; 
     }; 
    } 
})();