WordPress正在加载以下2个文件wp_head()
:
<script type='text/javascript' src='http://example.com/wp-includes/js/jquery/jquery.js?ver=1.10.2'></script>
<script type='text/javascript' src='http://example.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>
Run Code Online (Sandbox Code Playgroud)
为了阻止这种情况发生,我尝试停用所有插件并在functions.php中取消注册jQuery,但似乎没有任何东西可以摆脱它.
任何想法我怎么能阻止这个?
我正在使用Wordpress v3.6.
我看到jQuery具有jQuery-migrate脚本来安全升级jQuery。他们有两个jQuery迁移存储库:
是否需要先迁移到1.9,然后再迁移到3.x,还是可以仅将第一个脚本包含在我的网站中,然后直接迁移到3.x?使用1.9中删除的API时,3.x迁移脚本是否不会通知?
我很快将负责升级到jQuery 1.9.那说我知道我们住的几个地方(); 切换(); 徘徊(); 和browser(); 途中有很多惊喜, - 我很有信心.
如果我添加了迁移插件,它是否会继续执行旧代码 - 或者只是在控制台中给我消息以帮助我追踪并修复问题?
有没有人从1.4.1跳到1.8或1.9?已经实现了迁移插件并看到它的工作原理和局限性?
为了提高页面速度我使用谷歌CDN下载jquery文件,我也回退到从本地下载jquery谷歌CDN失败.
以下是使用后备的方法
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
document.write(unescape("%3Cscript src='common/script/jquery-1.9.1.min.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
Run Code Online (Sandbox Code Playgroud)
上面的代码是完美的,我的问题是如何检查是否加载了jquery迁移文件?
我只需要检查是否加载了http://code.jquery.com/jquery-migrate-1.1.0.js.我希望if(typeof jQuery =='undefined'){}这不会在这里工作.
任何解决方案
我正在使用jquery 2.0但是也想使用jQuery migrate插件,所以我的网站将在旧版浏览器上运行.但是,我一直没能成功.我在html的标题部分中有以下内容.
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<script src="/Scripts/jquery-2.0.3.js"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
</head>
Run Code Online (Sandbox Code Playgroud)
兼容性元标记是我可以在我的计算机(具有IE 11)上测试它.我没有带旧IE的电脑.无论如何,这给了我javascript错误,如:
0x800a01b6 - JavaScript运行时错误:对象不支持属性或方法'addEventListener'
jQuery迁移指南(https://github.com/jquery/jquery-migrate/)似乎只是说在包含jQuery之后包含migrate插件.我究竟做错了什么?
编辑
我发现我的本地jquery.js文件必须已损坏,或者我从中得到的nuget包有一个糟糕的版本.因为当我直接从code.jquery.com包含jquery时,该错误消失了.
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<script src="http://code.jquery.com/jquery-2.1.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
</head>
Run Code Online (Sandbox Code Playgroud)
但是,我的脚本出错了.这是一个示例脚本
function HighlightSelectedRow(tr) {
$("#TableSummary tr").removeClass("HighlightedRow");
tr.className += " HighlightedRow";
}
Run Code Online (Sandbox Code Playgroud)
它给出以下错误
0x800a138f - JavaScript runtime error: The value of the property '$' is null or undefined, not a Function object
Run Code Online (Sandbox Code Playgroud)
谢谢
我可以通过 RequireJS 加载 jQuery 迁移吗?我不明白如何正确处理时间。看这个例子:
require([
'jquery',
'jqmigrate'
], function ($) {
if ($.browser.msie) {...}
});
Run Code Online (Sandbox Code Playgroud)
之前不可能jqmigrate
加载吗jquery
?另外,我不想jqmigrate
在每个模块中继续显式加载。有什么方法可以在需要 jQuery 时自动require.config
加载吗?jqmigrate
之后npm install jquery-migrate
,我可以只require('jquery-migrate');
在主scripts.js
文件中。这工作正常:
console.log(jQuery.migrateVersion); // JQMIGRATE: Migrate is installed with logging active, version 3.0.0
Run Code Online (Sandbox Code Playgroud)
现在,我想对其进行设置,以便 jquery-migrate 不存在于生产版本中。
webpack.config.js:
var dev = process.env.NODE_ENV !== 'prod';
var webpack = require('webpack');
var dist = '/dist/js';
module.exports = {
context: __dirname,
entry: __dirname + '/src/js/scripts.js',
output: {
path: __dirname + dist,
filename: 'scripts.js'
},
resolve: {
alias: {
'jquery': 'jquery/src/jquery',
'jquery-migrate': 'jquery-migrate'
}
},
plugins: dev ? [
new webpack.ProvidePlugin({
'$': 'jquery',
'jQuery': 'jquery',
'jquery-migrate': 'jquery-migrate'
})
] …
Run Code Online (Sandbox Code Playgroud) 我已经将 jQuery 从 1.3.1 升级到 1.12.4。一切正常,我准备删除 jquery-migrate-1.4.1.js,因为我在升级过程中仅将其用于调试目的。
当我从<head>
我的网站部分删除 jquery-migrate-1.4.1.js 时,该页面不再正常工作。JavaScript/jQuery 中的某些内容中断了。我正在阅读https://blog.jquery.com/2016/05/19/jquery-migrate-1-4-1-released-and-the-path-to-jquery-3-0/试图找到有关它,这是我发现的:
删除 Migrate 1.x 插件并确保页面在未加载的情况下仍能正常工作。
为什么在成功升级 jQuery 后需要 jquery-migrate-1.4.1.js?我认为它只是一个专门用于调试目的的“幕后”脚本,而不是维护任何 jQuery/JavaScript 功能。
我正在将项目中的 jQuery 升级到最新版本 3.4.1。我设置jquery-migrate
并查看浏览器控制台以查看我应该修改的内容。其中包括jQuery.fn.scroll() event shorthand is deprecated
.
我的代码很简单:divBody.scroll();
.
该文件说:To trigger the event manually, apply .scroll() without an argument:
。我坚信这就是我正在做的事情。为什么迁移仍然抱怨?
我知道以下内容写在https://jquery.com/upgrade-guide/3.0/站点中。但遗憾的是这让我感到困惑。
使用以下步骤从 1.11.0 或 2.1.0 之前的 jQuery 版本升级到新版本 3.0
它说早于 1.11.0,这不适用于我当前的 1.8 版本..那么我应该在我的项目中使用 thejquery-migrate-1.4.1.js
或 the 吗?jquery-migrate-3.3.1.js
谢谢!
jquery-migrate ×10
jquery ×9
javascript ×3
cdn ×1
google-cdn ×1
php ×1
requirejs ×1
webpack ×1
wordpress ×1