【问题标题】:jQuery code doesn't work if I'm using a local jquery.js file, why?如果我使用本地 jquery.js 文件,jQuery 代码不起作用,为什么?
【发布时间】:2011-08-21 01:36:23
【问题描述】:

以我的页面为例..

<!doctype html>
<html>
  <head>
  </head>
  <body>
    <script src="jquery.js"></script>
    <script type="text/javascript">
      $(document).ready(function(){
      });
    </script>
    <div id="div1"></div>
  </body>
</html>

如您所见,我使用的是本地 jQuery 文件 (jquery.js),所以每次我编写 jQuery 代码时,如果知道我的页面和 jquery.js 都在同一级别,它就无法工作..

但是当我在线使用 jQuery 文件时,例如这样

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>

一切正常……

我也尝试将&lt;script&gt;&lt;/script&gt; 放入&lt;head&gt;,但没有任何效果

附:我下载了我在网上使用的同一个文件并在本地使用它。

【问题讨论】:

  • 本地 jQuery 文件真的被加载了吗?如果直接在浏览器中加载会发生什么? Firebug 的“网络”标签对此有何评论?
  • 您确定 jquery.js 文件名正确吗?
  • @Pekka 这是萤火虫所说的cl.ly/6YUl
  • @Damien 是的,我确定,我只是复制了文件名并将其放在我的代码中
  • 为什么它在 Dropbox 中?您的网页的网址是什么?

标签: jquery file local


【解决方案1】:

浏览器不应该关心文件是否是本地的[对于webserver来说是本地的,大概......?]。

您在本地拥有的文件副本有问题。确保路径正确并使用 Firebug 来查看其加载情况。


编辑 对于您的demo_local,我的 Firebug 安装抱怨 jquery.js 文件中有外来字符。当我查看“脚本”选项卡时,它似乎是 Unicode 格式,但以 ASCII 格式提供。

【讨论】:

  • 我很确定文件名,这就是萤火虫所说的 cl.ly/6YUl,我使用的是从帖子中的相同 URL 下载的相同文件
  • @Sam:那么 Tomalek 声明的第一部分是相关的:“您在本地拥有的文件副本有问题。”
  • @Tomalak:“T.J.” ;-)(希望这不是我第二次写错你的名字,我完全看到了“Tomalek”,尽管它显然有一个“a”。)
  • @Tomalak 真的很奇怪,我只是从这里下载文件&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"&gt;&lt;/script&gt; 然后将其重命名为 jquery.js 并将其放在我的页面旁边而不做任何修改
  • Chrome 调试器中的相同...我看到很多奇怪的字符。也许添加一个Content-Type:application/x-javascript; charset=utf-8 标头会起作用。
【解决方案2】:

我可以看到您正在使用 Dropbox 来托管您的文件,这自动意味着您无法对您的文件进行本地引用。尝试包含完整的保管箱链接,看看它是否有效

【讨论】:

  • 为什么?如果他从 Dropbox 上的路径请求page.html(他看起来是这样),那么jquery.js 的路径也将在 Dropbox 上。
  • OP 发布的截图表明从 Dropbox 成功下载了这两个资源,我相信..?
  • 我在本地工作,但我刚刚上传到 Dropbox 看看会发生什么,不幸的是同样的问题
  • @T.J.克劳德,你是对的。这可能是浏览器问题吗? @Sam 你在什么浏览器上测试过这个?
  • @boug firefox 和 safari .. 顺便说一句,我的意思是在本地加载我的 page.html 旁边的文件,所以它是否在 Dropbox 上并不重要
【解决方案3】:

这是一个编码问题。您的 page.html 文件是 UTF-16 格式(尽管它包含错误的 meta 标记,表明它使用的是 UTF-8),但 jquery.js 文件不是(它是 ASCII、Windows-1252/ISO- 8859-1 或 UTF-8 - 哪个并不重要,它坚持所有字符的共同点)。

我建议更正page.html 的编码(使其实际上是UTF-8)。这可能会清除它。但如果不是,或者如果您真的想要 UTF-16(例如,您正在制作一个主要使用非西方脚本的页面),您可以使用 script 元素上的 charset attribute 来告诉浏览器在获取时会发生什么脚本。

我是这样到达那里的:当我访问 the link you posted 时,我在控制台(在 Chrome 和 Firebug 中)的 jquery.js 中收到“非法令牌”错误,并且显示的 jquery.js 文件内容是乱码,显示主要是东亚字符集。如果我直接请求资源,我就没有这个问题。这立即让我想到“编码问题”并去看看page.html。快速浏览一下就发现它是 UTF-16 格式的。仔细检查jquery.js 文件是否也不是 UTF-16(它可能是,尽管我永远不会这样编码 JavaScript,这会非常浪费)并发现它是 ASCII 兼容的编码(例如,而不是 UTF-16)。

如果您不是 100% 确定您理解我所说的 page.html 是 UTF-16 但 jquery.js 是 UTF-8 或类似的,我建议您阅读 Joel Spolsky 的 The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)以及 unicode.org 上的各种常见问题解答,特别是 the main onethe one discussing the various UTFs and the BOM

【讨论】:

  • 好吧 T.J. charset="UTF-8" 解决了问题.. 但为什么会发生这种情况,我总是这样做而不使用字符集
  • @Sam:原因是您的page.html 文件是UTF-16 格式(即使它说它是UTF-8 格式)。除非另有说明,否则浏览器将对页面链接到的内容采用相同的编码;对于jquery.js 的请求,Dropbox 根本没有返回任何编码标头。虽然添加charset 有效,但我怀疑真正的问题是您无意中在page.html 文件上使用了UTF-16。您真的是要使用 UTF-16 吗?
  • 现在我真的明白了.. 看来这是我的文本编辑器 cl.ly/6ZMr 的问题,我将其更改为 cl.ly/6Y5e 所以即使没有 charset,它现在也可以工作,谢谢TJ清理事情:)
  • @Sam:很好,很高兴有帮助!
【解决方案4】:

山姆

你在那个 jquery 中有一些奇怪的代码。

本地的 jquery.js 好像是错误的

请从这里下载

http://code.jquery.com/jquery-1.6.min.js

你可以试试下面的

标准文档类型

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html lang="en">

并将脚本更改为

<script type="text/javascript">

</script>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-12
  • 2020-08-19
相关资源
最近更新 更多