0

我正在开发一个界面<audio>,我正在使用 JQuery UI 的滑块来提供搜索和音量功能。

我实际上有一个丑陋的小模型,效果很好;我已经把它贴在这里了。(如果你摆弄它,你会想要与“实例 2”进行交互,它链接到网络上其他地方的源。“实例 1”是指与 html 文档位于同一目录中的源文件,而我没有上传那些。)

当我尝试在 WordPress 网站中实现这个(稍作修改)时,问题就来了。脚本本身都在这里处理,结果显示(或失败,视情况而定)在http://www.jameskallembach.com.

jamesPlayerMini.js在目前的形式中,Chrome 开发工具中的第155行会弹出一个错误Uncaught TypeError: Object [object Object] has no method 'slider'。然而,这只是我通过一些简单的调整就能产生的错误之一;如果我:

  • 删除第 20-61 行周围的注释标记,我Uncaught TypeError: Cannot read property 'slider' of undefined在第 21 行得到;和
  • 如果我还注释掉第 19 行和第 202 行,将有问题的段落放在 下window.onload,我会Uncaught ReferenceError: $ is not defined进入第 21 行。

在这两种情况下,脚本在第 21 行完全停止工作。

我对这些错误的预期解释是调用时 JQuery 和 JQuery UI 不存在,但我认为我已经通过将它们分别添加为<head>. 我基本上不知道发生了什么,启蒙将不胜感激。

更新:我用 jQuery 和 Wordpress 看了一下Uncaught TypeError?,并将 window.onload=function(){ 包装在 jQuery(function($) { }); 似乎已经解决了一些问题,但如果我取消注释第 20-61 行,我们又回到了错误之地。

4

1 回答 1

0

事实证明,JavaScript/JQuery 的问题较少,而 Wordpress 的问题更多:

  • 首先,简单一点:WordPress 不分配$给 JQuery(因为其他 JavaScript 库需要它),所以所有的 JavaScript 都需要重新编写,JQuery$.
  • 其次,WordPress 更喜欢以自己独特的方式处理包含 JavaScript,wp_enqueue_script而不是使用普通<script>标签。这主要是 JQuery 和 JQuery UI 的一个问题,当通过标签调用它们时无法正确访问它们<scrip>(部分原因是其他插件也试图以这种方式调用它们,通常很糟糕)。因此,我重新编写了脚本,该脚本确定将哪些 JavaScript 添加到 PHP 中的哪个页面,并让新的 PHP 脚本以 WordPress 批准的形式将每个 JavaScript 排入队列,将 JQuery 和 JQuery UI 的相关位列为依赖项,这$当排队的 JavaScript 运行时,让 WordPress 负责这些依赖项已加载并准备好使用(怪癖除外)。
于 2013-06-30T08:33:55.687 回答