jQuery - 工作/不工作 - joomla,google 库
jQuery - working / not working - joomla, google libs
我遇到了一个奇怪的情况,无法弄清楚为什么我的 JavaScript 无法正常工作。
这是一般问题 - 如果我从这个 link 加载 jquery 2.2.0:
“https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js”
一切正常
然而 Joomla 正在加载它自己的版本 1.2,我已经用我的模板覆盖到当前的 3.3.1 版本
此时一切正常,但我加载了 2 个 jQuery(一个来自 joomla,另一个来自 google lib)
如果我删除 google 2.2 版本,JS 将无法正常工作(在 html 中使用标准脚本加载)
如果我将模板中的 jquery 替换为 google 的 2.2.0 版本,它仍然无法正常工作(通过 joomla head 加载)
我收到此错误:类型错误:$.tablesorter 未定义
这对我来说毫无意义
不确定这是否有帮助,但我在我的 WordPress 网站上遇到了类似的问题并使用 jQuery 迁移解决了:https://github.com/jquery/jquery-migrate
用法
在您的网页中,在 jQuery 的脚本标记之后加载此插件,例如:
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<script src="https://code.jquery.com/jquery-migrate-3.0.1.js"></script>
不好意思,还有几种方法可以让它发挥作用。
所以在同一页面上,您是否完全删除了 Joomla 1.2 jQuery?您提到您将其替换为 3.3.1
是否还有特定页面需要 jQuery 2.2?还是要将整个网站迁移到 jQuery 2.2?
如果你只需要在一个页面上使用它,你可以在页眉中做一些 php 来根据页面 URL 切换使用的 jQuery 这样它只会加载每页需要一个而不是 2 jQuery。不是最理想的方式,但应该可行。
<?php
//First detect the URL
$url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
//Now do the if else to switch jQuery on desired page.
if (strpos($url, 'myPage.php') !== false) {
echo '<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>';
} else {
echo '<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>';
}
?>
如果您需要或想要它在最新的 jQuery 上,我会删除所有 jQuery 和 jQuery 迁移,然后将两者的最新版本放入,然后尝试解决错误剩余
你能分享更多错误吗?
例如只有 jQuery 1 的错误,然后只有 2 的错误等等?
我已经通过更换所有
设法解决了问题
$(function () {...
有
jQuery(function ($) { ..
我正在从我自己的服务器
加载最新的jQuery
我在另一个网站上有完全相同的设置,没有这样的问题
我遇到了一个奇怪的情况,无法弄清楚为什么我的 JavaScript 无法正常工作。
这是一般问题 - 如果我从这个 link 加载 jquery 2.2.0: “https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js”
一切正常
然而 Joomla 正在加载它自己的版本 1.2,我已经用我的模板覆盖到当前的 3.3.1 版本
此时一切正常,但我加载了 2 个 jQuery(一个来自 joomla,另一个来自 google lib)
如果我删除 google 2.2 版本,JS 将无法正常工作(在 html 中使用标准脚本加载)
如果我将模板中的 jquery 替换为 google 的 2.2.0 版本,它仍然无法正常工作(通过 joomla head 加载)
我收到此错误:类型错误:$.tablesorter 未定义
这对我来说毫无意义
不确定这是否有帮助,但我在我的 WordPress 网站上遇到了类似的问题并使用 jQuery 迁移解决了:https://github.com/jquery/jquery-migrate
用法 在您的网页中,在 jQuery 的脚本标记之后加载此插件,例如:
<script src="https://code.jquery.com/jquery-3.0.0.js"></script>
<script src="https://code.jquery.com/jquery-migrate-3.0.1.js"></script>
不好意思,还有几种方法可以让它发挥作用。
所以在同一页面上,您是否完全删除了 Joomla 1.2 jQuery?您提到您将其替换为 3.3.1
是否还有特定页面需要 jQuery 2.2?还是要将整个网站迁移到 jQuery 2.2?
如果你只需要在一个页面上使用它,你可以在页眉中做一些 php 来根据页面 URL 切换使用的 jQuery 这样它只会加载每页需要一个而不是 2 jQuery。不是最理想的方式,但应该可行。
<?php
//First detect the URL
$url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
//Now do the if else to switch jQuery on desired page.
if (strpos($url, 'myPage.php') !== false) {
echo '<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>';
} else {
echo '<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>';
}
?>
如果您需要或想要它在最新的 jQuery 上,我会删除所有 jQuery 和 jQuery 迁移,然后将两者的最新版本放入,然后尝试解决错误剩余
你能分享更多错误吗?
例如只有 jQuery 1 的错误,然后只有 2 的错误等等?
我已经通过更换所有
设法解决了问题$(function () {...
有
jQuery(function ($) { ..
我正在从我自己的服务器
加载最新的jQuery我在另一个网站上有完全相同的设置,没有这样的问题