2012-02-16 77 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; 
     }; 
    } 
})();