Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use jQuery Migrate plugin

I'm using jquery 2.0 but would like to also use the jQuery migrate plugin so my website will work on older browsers. However, I've been unsuccessful at getting it to work. I have the following in the header section in my 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>

The compatibility meta tag is so I can test this on my computer (which has IE 11). I don't have a computer with an older IE. Anyway, this is giving me javascript errors such as:

0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'addEventListener'

The jQuery migrate guide (https://github.com/jquery/jquery-migrate/) seems to just say to include the migrate plugin after including jQuery. What am I doing wrong?

EDIT

I found my local jquery.js file must be corrupt or maybe the nuget package I got it from has a bad version of it. Since that error goes away when I include jquery directly from code.jquery.com.

<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>

However, my scripts give an error. Here's an example script

function HighlightSelectedRow(tr) {
    $("#TableSummary tr").removeClass("HighlightedRow");
    tr.className += " HighlightedRow";
}

It gives the following error

0x800a138f - JavaScript runtime error: The value of the property '$' is null or undefined, not a Function object

Thanks

like image 940
Skye MacMaster Avatar asked Feb 19 '14 14:02

Skye MacMaster


People also ask

What is jQuery migrate plugin?

jQuery Migrate Plugin The plugin restores deprecated features and behaviors so that older code will still run properly on newer versions of jQuery. Use the uncompressed development version to diagnose compatibility issues, it will generate warnings on the console that you can use to identify and fix problems.

Why do we use jQuery migrate?

In jQuery, migrate is defined as a JavaScript library for upgrading libraries such as jQuery, making it very simple for restoring the APIs when upgrading from an older version to a newer version as these API's were removed during the up-gradation to the newer version of jQuery.

How add jQuery migrate to WordPress?

In turn, this will fix all problems with the plugins and themes. If you're wondering how to download this plugin, you simply need to visit your WordPress dashboard. Go to 'Plugins' and then 'Add New. ' Search for Enable jQuery Migrate Helper, and finally, click on the 'Activate' button.


3 Answers

May be you should reorder the js stack:

<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<script src="/Scripts/jquery-2.0.3.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.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>
</head>
like image 167
Jai Avatar answered Oct 07 '22 01:10

Jai


Change the order of the include jquery migrate script

like image 42
Nikhil Avatar answered Oct 06 '22 23:10

Nikhil


Not likely it was a file corruption, just an incompatibility with jQuery 2.x and IE 8. If you need IE 8 compatibility, use the 1.x series.

This applies even if you are running IE 10 (and I would assume newer). In my case, I had a few PCs with Tools / Compatibility view settings / Display Intranet sites in compatibility view checked. So, it worked fine in Visual Studio on my local PC, but when I "published" to an in house server for the next layer of testing, SPLAT. Some PCs crash and burned, while others were fine.

The jQuery download site gives this warning.

jQuery 2.x has the same API as jQuery 1.x, but does not support Internet Explorer 6, 7, or 8. ... Since IE 6/7/8 are still relatively common, we recommend using the 1.x version unless you are certain no IE 6/7/8 users are visiting the site.

For those that want to force IE out of compatibility mode,

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

can be added at the very top of your master page.


Edit

This code will call the correct version of jQuery for older IEs. It will load 1.x for IE 8 and for 10 in compatibility mode. This can be added in combination with or as a replacement to the Meta value above.

<!--[if lt IE 9]>
    <script src="http://code.jquery.com/jquery-1.11.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="http://code.jquery.com/jquery-2.1.0.js"></script>
<!--<![endif]-->
like image 24
Greg Little Avatar answered Oct 06 '22 23:10

Greg Little