【问题标题】:$ is not defined in Firefox using jQuery 1.7.2$ 没有在 Firefox 中使用 jQuery 1.7.2 定义
【发布时间】:2012-08-28 12:40:25
【问题描述】:

我只在 Firefox 中遇到此错误,在 IE 和 Chrome 中一切正常,我使用的是 Firefox v 15.0。这是我的代码

<script type="text/javascript" src="/_layouts/Scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
    $(function () {
       // some code here
    });

异常发生在第一行(文档就绪),页面似乎根本无法引用 jQuery 库,但是如果我从错误控制台单击源链接,我可以在浏览器中看到 jQuery 库的代码。这很奇怪,因为我在 IE 或 Chrome 中没有错误。

任何想法为什么会发生这种情况?

编辑: 这是整个js代码

$(function () {

        var digitCode;

        $('input[type=submit][id*=btnCancel]').on('click', function (e) {
            e.preventDefault();
            closeModalDialog('Cancel');
        });

        $("select[id*=ddlContacts]").on('change', function () {
            var contactID = $(this).val();
            if (parseInt(contactID) == 0) {
                $('span[id*=lblCEOTitle]').text("");
                return;
            }

            var data = { contactId: contactID };

            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "AddCompany.aspx/CeoTitle",
                data: JSON.stringify(data),
                dataType: "json",
                success: function (result) {
                    $('span[id*=lblCEOTitle]').text(result.d);
                    $('input[type=hidden][id*=hdnFieldCeoTitle]').val(result.d);
                },
                error: function () {
                    alert('error');
                }
            });
        });
    });

【问题讨论】:

  • 你试过 $(document).ready(function(){}); ??
  • 不,因为它不识别 $,你真的认为改变文档准备好的语法会有帮助吗?
  • 那真的很奇怪。也许尝试console.log(typeof jQuery) 并检查它是否在包含脚本后定义。
  • 您能给我们展示一下 HTML head 标签中包含的所有内容吗?
  • @Tolis 不是整个 head 部分,而是为 jQuery 参考生成的 html 可能 type="text/jscript" 而不是 type="text/javascript" 导致问题?

标签: jquery firefox


【解决方案1】:

除非您离线工作,否则您应该让 CDN 为您的用户托管这些文件。与在服务器上托管 jQuery 相比,这样做有几个优点:减少延迟、增加并行性和更好的缓存。更多详情请查看这篇文章:http://encosia.com/3-reasons-why-you-should-let-google-host-jquery-for-you/

这也省去了你刚刚遇到的一些麻烦(路径文件管理、损坏的文件、坏版本等)。

【讨论】:

  • 他正在使用Sharepoint,这意味着最有可能的场景是内网应用程序,因此外部CDN可能会出现问题。仍然是一个很好的做法,可以在内部完成
  • 无论如何我都没有意识到这一点。我相信这对其他人有用。
  • 嗯,这很奇怪,因为我试过这个,但没有帮助,但是,我再次更改了对 CDN 的引用,它开始在 Firefox 中工作。
【解决方案2】:

你能否提供一些关于网页的内容(例如:它是 ASP.NET 吗?) 脚本引用是否正确解析? (如果脚本已加载,您可以使用 firebug 检查) 您是否正在使用任何其他可能与 jquery 冲突的 javascript 框架,确保未定义 $?

【讨论】:

  • 这不应该被点击,因为它没有用,因为在很多情况下所涉及的技术会导致问题。除非您知道自己在说什么,否则不应将答案标记为无用。
  • 好吧,Sharepoint 和 Firefox 确实存在问题,尽管微软怎么说。你检查脚本是否加载了萤火虫?另外,尝试完整的 URL 而不仅仅是相对的,也许 firefox 不喜欢以 / 开头的 URL
  • @CarlosGrappa 完整 URL 没有帮助,您能分享有关该主题的链接吗? (FF 不适用于 SharePoint)
  • @michaelmoore 只是谷歌,有些东西不支持,有些需要一些配置(例如 NTLM)。如果您使用 firebug 运行,您是否看到加载了 jquery 库脚本?另外,试试 alert($());
  • @CarlosGrappa 是的,对jQuery库的请求返回200OK(在firebug中),在控制台中,typeof(jQuery)返回undefined,typeof($)返回函数,真的很奇怪,为什么在Firefox中会出现这个问题仅限。
猜你喜欢
  • 2021-08-08
  • 2012-02-07
  • 2018-01-02
  • 1970-01-01
  • 2015-12-21
  • 2012-04-24
  • 2012-07-21
  • 2017-10-03
  • 2014-02-25
相关资源
最近更新 更多