1

使用 JsonP 注入 JQuery 的脚本是否安全?

我的网络应用程序的安装是 - 将脚本添加到客户的网站(如谷歌分析)。我正在考虑在客户的网站上使用 JQuery,作为我自己注入脚本的一部分。

我想知道,是否存在某种风险?该应用程序需要支持任何类型的网站。

谢谢亚龙

4

3 回答 3

4

很难说你在用你的图书馆做什么,但似乎你正在构建某种类型的小部件以在多个站点上使用。

在@K Prime 的启发性评论让我研究了如何在需要时包含两个 jQuery 副本后,从这里开始更新:

如果您正在构建一个将存在于您无法控制的站点上的小部件,并且将使用“复制此嵌入代码并粘贴到您的站点”类型的功能添加到该站点,那么使用 jQuery通常不好的。(当然 jQuery 小部件和插件比比皆是,但这些通常由开发人员选择和安装/实现,而不是通用的“复制粘贴”小部件类型实现)

可能最大的原因(在意识到您可以在同一页面上运行两个 jQuery 副本之后)是文件大小的增加。是否有保证将取决于您的特定需求和功能。简单的小部件 = 纯 JS。复杂的网站前端扩展,那么增加文件大小可能是值得的。

要正确包含它(这样您就不会在他们的网站上遇到冲突),请遵循如下所示的工作流程:

  1. 使用此处其他答案中提到的 Google API 将 jQuery 动态添加到他们的页面。
  2. Run var mywidget_jQuery = $.noConflict( true );which 将恢复 的本义,$ 恢复的本义window.jQuery
  3. 动态添加您的脚本文件,但请确保将整个内容包装在一个自动执行的匿名函数中,如下所示:

JS

(function($){
    ... Your code here ...
})(mywidget_jQuery);

现在,您可以安全地$在您的特殊功能中使用您想要的所有 jQuery 功能,而不会出现问题。

额外的功劳您可以将第 1 步和第 2 步包装在一个 if 语句中,该语句测试是否window.jQuery已定义,如果已定义,则测试是否jQuery.fn.version足够高以运行您的代码。如果任一测试失败,则运行第 1 步和第 2 步。但是,如果它通过,则只需运行var mywidget_jQuery = window.jQuery,以便您在第 3 步中包含的脚本仍将运行。

于 2010-01-08T02:19:56.687 回答
2

您只需添加一个<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.js" />元素即可将 jQuery 添加到网站。

但是,请务必致电jQuery.noConflict()以防他们使用不同的$关键字。

于 2010-01-08T02:01:24.960 回答
0

如果您只是在引用该库之后,为什么不直接链接到托管在Google Code上的 API ?

于 2010-01-08T02:00:22.467 回答