首页 > 解决方案 > ReferenceError: xxx 未定义

问题描述

我在我的 eshop 上遇到奇怪的错误。它并不总是显示,我什至不知道它,因为在我的 PC 上它不显示,但我制作了将所有 javascript 错误发送到我的电子邮件的调试功能。我得到 ReferenceError: po_zaladowaniu_strony is not defined po_zaladowaniu_strony 是应该在页面加载后作为最后一个运行的函数,它设置了一切等等。我头我有(作为第一个脚本):

<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script type="text/javascript" src="/js/po_zaladowaniu.js?v=<?php echo date(U); ?>" ></script>
<script type="text/javascript" src="/js/strona.js?v=<?php echo date(U); ?>" ></script>

然后在关闭body标签之前我有:

<script type='text/javascript' src='https://code.jquery.com/ui/1.11.4/jquery-ui.min.js' defer></script>
<script type='text/javascript' src="https://code.jquery.com/jquery-migrate-1.2.1.min.js" ></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.min.js" defer></script>
<script type='text/javascript' src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js" defer></script>
<script src="/js/lightbox.js" defer></script>
<script type="text/javascript">
    jQuery(document).ready( function(){
        <!--  ODPALA Skrypty potrzebne po załadowaniu strony -->
        po_zaladowaniu_strony("<?php echo $_SESSION["sesja_id"] ?>","<?php echo $_SESSION["typ"]; ?>");
    });
</script>

po_zaladowaniu_strony 函数在 po_zaladowaniu.js 和 strona.js 中有其子函数,它们在 html 中被声明为 first。那么,为什么有时会出现该错误?

标签: javascriptphpjquery

解决方案


问题出在defer. 感谢freen-m评论中指出:

根据浏览器,defer可以在您的 doc.ready 之后加载您的脚本 - 删除defer以确保安全。无论如何,体面的现代浏览器都会缓存已解析的脚本,因此这些脚本可能已经在浏览器中缓存,已经解析,从而减少了对defer. 有关 SO 的更多信息,请参见链接stackoverflow.com/a/8638597/2181514


推荐阅读