Javascript ';美元之谜。md5不是一个函数';

Javascript ';美元之谜。md5不是一个函数';,javascript,jquery,iframe,md5,Javascript,Jquery,Iframe,Md5,我有一个使用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&g

我有一个使用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>

//我的代码在这里(声明变量和函数)
变量代码=$.md5('mystring');
//还有一点代码
但随后我将其上传到一个web应用程序(我无法控制),使其看起来像这样,并将其放入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('mystring');
//一些代码
这段代码开始给我
$。md5不是一个函数
错误。奇怪的事。尝试清除缓存,将jquery.md5.js代码直接放入我的代码中,但没有任何效果

请注意,所有代码都在我的机器上运行,因此我的JS肯定没有问题

更新:有问题的代码行为似乎是不可预测的,这意味着有时它可以在没有更改的情况下正常工作


有什么问题吗?

嗯。。。这有点尴尬,但问题出在jQuery中。我在iframe中包含的内容与页面中包含的内容冲突。不知何故,这导致在代码结束后“隐藏”my$.md5函数


是的,我知道,很明显jQuery可能会导致问题。

当然,“某些代码”的初始块可能会破坏一些东西,但我们看不出这是不是真的,因为这不在问题中。@Pointy抱歉,忘了添加这个。在那里我声明函数和变量,没有什么特别的。我也检查过了。我不确定把我的完整代码放在这里是否是个好主意,因为这里太复杂了,无法缩小可能的范围,如果在iframe之外使用webapp的页面结构(在主体中使用脚本标记,在头部使用额外的变量),它会抛出同样的错误吗?我们能看到jquery.md5.js吗?您已经在上面的示例中使用了example.com。在尝试使用md5代码之前,您可以始终添加一个
console.log($)
,以确保它仍然是jQuery引用。切勿在同一页面上使用多个版本的jQuery。您的问题非常常见,这是因为人们在同一页面上包含多个版本(甚至多次包含同一版本)。