'$ .md5不是函数'的谜团

3

我有一段使用jQuery.MD5库的JS代码,在我的服务器上能够完美运行:

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://example.com/static/js/jquery.md5.js"></script>
</head>
<body>
    <script>
      // my code goes here (declaring variables and functions)
      var code = $.md5('mystring');
      // and a little more code
    </script>
</body>

但是当我将它上传到一个网络应用程序(我无法控制)时,它会被显示成这个样子并且被放入一个iframe中:

<head>
  <script>
    // some extra variables are declared here
    // double-checked that nothing here can break my code
  </script>
</head>
<body>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://example.com/static/js/jquery.md5.js"></script>
    <script>
        // some code
        var code = $.md5('mystring');
        // some code
    </script>
</body>

这段代码开始出现错误:$.md5 is not a function。很奇怪。尝试清除缓存,将jquery.md5.js代码直接放入我的代码中,但都没有起作用。

请注意:在我的电脑上,所有的代码都可以正常工作,因此我的JS应该没有问题

更新:问题代码的行为似乎是不可预测的,有时候它可以正常工作而不需要进行任何更改。

可能出了什么问题?


2
当然有可能初始的“一些代码”会破坏一些东西,但我们无法确定是否如此,因为这不在问题中。 - Pointy
@Pointy 抱歉,忘记添加这个了。我在那里声明函数和变量,没有什么特别的。我也检查过了。不确定是否将我的完整代码放在这里是一个好主意,因为它太复杂了。 - user6594055
仅为了缩小可能性范围,如果您在iframe之外使用webapp的页面结构(包含在body中的脚本标签和head中的额外变量),是否会抛出相同的错误? - Daniel Beck
我们能看到jquery.md5.js吗?你在上面的示例中使用了example.com。 - Scoots
嗯。复制您的第二个代码块,除了使用https://raw.githubusercontent.com/placemarker/jQuery-MD5/master/jquery.md5.js而不是example.com URL之外,似乎对我有效;没有错误消息,并且“code”获得值169319501261c644a58610f967e8f9d0。 - Daniel Beck
显示剩余5条评论
2个回答

0

如果您想使用jQuery md5函数,您应该在项目中导入jquery.md5.js文件。

步骤-

  1. https://github.com/placemarker/jQuery-MD5下载jquery.md5.js文件

  2. 将此文件复制到源文件夹中。(例如:assert/theme/js)

  3. 将js文件导入到您的项目中。 (例如:<script src="<?= base_url(); ?>/public/assert/theme/js/jquery.md5.js"></script>

)

完成了!你做完了!


0
嗯...有点尴尬,但问题出在jQuery上。我在iframe中引用的那个与页面中引用的冲突了。不知怎么的,这导致我的$.md5函数在代码结束后被“隐藏”了。
是的,我知道,很明显jQuery可能会引起问题。

1
不要在同一页面上使用多个版本的jQuery。你所遇到的问题非常普遍,这是因为人们在同一页面上包含了多个版本(甚至是同一个版本多次出现)。 - Adam Jenkins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接