代码之家  ›  专栏  ›  技术社区  ›  Yaron

跨域注入jquery

  •  1
  • Yaron  · 技术社区  · 16 年前

    使用jsonp注入jquery脚本是否安全?

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

    我在想,有没有什么风险? 应用程序需要支持任何类型的网站。

    谢谢你 亚龙

    3 回复  |  直到 16 年前
        1
  •  4
  •   Doug Neiner    16 年前

    很难说你在用你的程序库做什么,但是你似乎正在构建一种用于多个站点的小部件。

    在@k prime的一条启发性评论让我研究了如何在需要时包含两个jquery副本之后,从这里开始更新:

    它是 通常地 如果您正在构建将在站点上运行的小部件,那么使用jquery是不好的 外部 您的控件,并将被添加到具有“复制此嵌入代码并粘贴到您的站点”类型的功能的站点中。 (当然jquery小部件和插件比比皆是,但这些通常是由开发人员选择和安装/实现的,而不是一般的“copy-n-paste”小部件类型实现)

    可能是最大的原因 可以 在同一页上运行两个jquery副本)是文件大小的增加。是否有必要将取决于您的特殊需要和功能。简单的小部件=直JS。复杂的网站前端扩展,那么可能值得文件大小的增加。

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

    1. 使用googleapi动态地将jquery添加到他们的页面中,如这里的其他答案所述。
    2. var mywidget_jQuery = $.noConflict( true ); 它将恢复 $ 还原原意 window.jQuery .
    3. 动态添加脚本文件,但请确保将整个内容包装在一个自动执行的匿名函数中,如下所示:

    JS

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

    现在,你可以安全地使用 $ 在您的特殊函数和所有jquery特性中,您希望没有问题。

    额外信贷 您可以将步骤1和2包装在一个if语句中,该语句测试 窗口.jquery 如果定义了,则测试 jQuery.fn.version 足够运行代码。如果任一测试失败,则运行步骤1和2。不过,如果它通过了,那就跑吧 var mywidget_jQuery = window.jQuery 因此,步骤3中包含的脚本仍将运行。

        2
  •  2
  •   SLaks    16 年前

    只需添加一个 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.js" /> 元素。

    不过,一定要打电话 jQuery.noConflict() 以防他们使用不同的 $ 关键字。

        3
  •  0
  •   Phil.Wheeler    16 年前

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

    推荐文章