【问题标题】:Using javascript to check which CDN jQuery is cached from on the client使用 javascript 检查客户端缓存了哪个 CDN jQuery
【发布时间】:2011-05-31 01:36:56
【问题描述】:

我可以使用 JavaScript 检查是否(已经)在目标 Web 浏览器(用户)上下载(缓存)了 JQuery?例如:

If (JQuery-from-Microsoft-CDN-downloaded)
    Then use http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4.js
Else if (JQuery-from-Google-APIs- downloaded)
    Then use http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
Else if (JQuery-from-code.jquery.com- downloaded)
    Then use http://code.jquery.com/jquery-1.4.4.min.js
Else use jQuery from my own website.

意味着使用 javascript 的能力来检查其中一个是否已下载到目标用户(Web 浏览器),如果没有,则使用我自己网站上的 jQuery,否则,如果为真,则使用下载的那个版本的 JQuery目标用户。

【问题讨论】:

  • 有趣的问题,但我认为如果不实际加载库,这是不可能的。虽然,使用 Ajax 调用并检查它是否返回 304 not modified.. 可能是可行的。但不确定这是否实用。
  • 用户如何在目标浏览器上“下载”一些东西?
  • @Luca 他的意思是有问题的库是否已经被缓存
  • 是的,我的意思是该库已经被 chached(来自任何服务器),我想使用该缓存库...

标签: jquery


【解决方案1】:

您不能这样做,这是same-origin policy 阻止任何机制来完成此操作的另一种情况。如果您考虑一下,这是有道理的...您可以使用任何机制来完成此操作,您可以使用通过查看他们缓存了哪些文件来确定某人访问了哪些网站。 p>

【讨论】:

  • 我的想法是利用 javascript(网络浏览器)的强大功能来使用缓存的库(通过动态选择)
  • @Hazro - 我理解你的想法/目标,但这是不可能的......如果允许这样的事情,这将是严重的隐私泄露。不幸的是,没有通用的方法可以做到这一点允许它被用于恶意目的。
【解决方案2】:

有几种方法可以检查 jQuery 是否已加载

var isLoaded = (jQuery) ? true : false;

var isLoaded = (typeof jQuery == 'undefined') ? false : true;

如果您的脚本加载在 jQuery 包含的同一文档中,您可以解析 DOM 并检查是否有任何 SCRIPT 标记包含指向任何 CDN 的链接

var jQueryVersion = isLoaded ? jQuery.fn.jquery : false;

【讨论】:

  • 这只会告诉您从脚本标签的源 URL 下载的版本 - 而不是之前从其他页面视图缓存的版本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
  • 1970-01-01
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
相关资源
最近更新 更多