【问题标题】:Jquery is not working in Google chromeJquery 在谷歌浏览器中不起作用
【发布时间】:2015-02-11 17:56:38
【问题描述】:
 $.getScript('Scripts/TEST/jquery-1.10.2.js', function () {
     $.getScript('Scripts/TEST/jquery-ui.js', function () {
        $("#accordion").accordion();
     });
 });

这适用于 IE,但不适用于谷歌浏览器。

【问题讨论】:

  • “不工作”是什么意思? 什么不起作用?第一个脚本是否加载? 2号行吗? .accordion() 不起作用吗?它有什么作用?您在控制台中看到任何错误吗?
  • 在您加载 jQuery 之前,$.getScript() 如何可用?您不会同时加载两个版本的 jQuery,是吗?
  • @Juhana:很好,我什至没有想到。
  • 它在哪个版本的 IE 中工作? getScript() 本身应该会引发错误,除非您在刚刚发布的代码之前的其他地方下载了 jquery。您在 Dev Tools > Console 中看到任何错误吗?
  • 我认为您的代码在 IE 中运行的原因是因为在旧浏览器中,脚本一旦下载就会立即执行,但在 chrome 等新浏览器中,它们会尝试将执行推迟到稍后执行时间。希望这是有道理的:)

标签: jquery


【解决方案1】:

问题在于调用手风琴的方式。根据 API docs

脚本加载后触发回调,但未加载 必须执行。

在您的情况下,jquery-ui.js 的回调是在下载完成后但在脚本执行之前立即调用的。在 Chrome 等最新浏览器中,它们会下载脚本,但会尝试推迟执行,直到 DOM 准备好。

您可以通过两种方式解决此问题。

  1. 在你的后面直接添加 jquery-ui.js 依赖项 jquery.js
  2. 您可以使用像 LABjs/requireJS 这样的脚本加载器

如果你使用LABjs,那么你可以这样做

  <!-- download LABjs directly -->
  <script src="LAB.js"></script>
  <!-- use LAB to download other dependencies -->
  <script>
     $LAB
       .script("Scripts/TEST/jquery-1.10.2.js").wait()
       .script("Scripts/TEST/jquery-ui.js")
       .wait(function(){
          $("#accordion").accordion();
       });
  </script>

【讨论】:

  • 我有一个问题,当我使用 src=时,Javascript 会在哪里加载?
  • 如果这能解决您的问题,请随时接受并投票;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 2020-04-11
  • 1970-01-01
  • 2012-10-12
  • 2016-01-25
  • 2013-10-09
相关资源
最近更新 更多