Side navigation
#9553 closed bug (patchwelcome)
Opened June 09, 2011 11:02AM UTC
Closed June 09, 2011 11:47AM UTC
Last modified January 28, 2013 01:42AM UTC
"Invalid calling object" in IE9 with DivX
Reported by: | mortenkrane | Owned by: | |
---|---|---|---|
Priority: | low | Milestone: | 1.next |
Component: | misc | Version: | 1.6.1 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
This is a bug that only appears in Internet Explorer 9 with DivX extensions installed and enabled. So its up for debate whether this is actually a jQuery bug or not, since its quite clearly a consequence of something the DivX extension does, but I found that everything stopped working for IE9 users until I made a rather nasty and specific workaround (see my comment here: http://forum.jquery.com/topic/internet-explorer-9-jquery-and-divx#14737000002443139).
(Also, I am surprised that the above forum post is the only other reference to this situation I can find, but that may of course be due to my searching skills.)
The bug seems to appear after the DivX plugin downloads some resource (and presumably does something in the DOM). After this happens I cannot append anything to the body element. In the Developer Toolbar console I get the error message "Invalid calling object".
I could not reproduce this in jsFiddle, but loading the code below into IE9 with DivX yields the error message every time for me.
<!DOCTYPE html> <html> <head><title>jQuery test</title></head> <body> <h1>Testing jQuery bug</h1> <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script> <script type="text/javascript"> $(document).ready(function() { var b = $("body"); var s1 = "<span>Now it works</span>"; var s2 = "<span>Now it doesn't</span>" b.append(s1); // Giving the DivX extension time to set up setTimeout(function() { b.append(s2); }, 2000); }); </script> </body> </html>
Also, using the console to append elements to the body yields the same error message.
I can append to any other element in the page, its only the body that fails. When disabling the DivX extension and restarting IE, everything works as expected. Setting the browser in IE8 document mode also seems to solve the problem.
I have reproduced this with jQuery 1.6.1, 1.5.1 and 1.5.2.
Again, I apologize if this is outside of jQuery's realm.
Morten
Attachments (0)
Change History (11)
Changed June 09, 2011 11:47AM UTC by comment:1
component: | unfiled → misc |
---|---|
priority: | undecided → low |
resolution: | → patchwelcome |
status: | new → closed |
Changed June 13, 2011 02:51PM UTC by comment:2
I am experiencing the same issue.
Changed June 17, 2011 09:26PM UTC by comment:3
a lot of users have that plugin. we're having to spend lots of time doing work arounds to fix this.
Changed June 17, 2011 09:58PM UTC by comment:4
The plug that breaks it is a beta...
Name: DivX Plus Web Player HTML5 <video>
Publisher: DivX, LLC
Type: Browser Helper Object
Version: 2.1.0.900
File date:
Date last accessed: 17 June 2011, 22:54
Class ID: {326E768D-4182-46FD-9C16-1449A49795F4}
Use count: 55
Block count: 7
File: npdivx32.dll
Folder: C:\\Program Files (x86)\\DivX\\DivX Plus Web Player
and
Name: DivX HiQ
Publisher: DivX, LLC
Type: Browser Helper Object
Version: 2.1.0.900
File date:
Date last accessed: 17 June 2011, 22:54
Class ID: {593DDEC6-7468-4CDD-90E1-42DADAA222E9}
Use count: 57
Block count: 5
File: npdivx32.dll
Folder: C:\\Program Files (x86)\\DivX\\DivX Plus Web Player
New versions don't break jQuery.
Changed July 13, 2011 12:11PM UTC by comment:5
Solution:
For all appendChild, replaceChild and insertBefore must be used:
this.appendChild = document.appendChild;
Example:
<body>
<script type="text/javascript">
$(document).ready(function() {
jQuery.fn.append = function() {
return this.domManip(arguments, true, function( elem ) {
if ( this.nodeType === 1 ) {
this.appendChild = document.appendChild;
this.appendChild( elem );
}
});
}
}
</script>
Changed July 18, 2011 02:33PM UTC by comment:6
The solution provided above by Anonymous does not fix the issue... tested on IE9 with "DivX Plus Web Player HTML5 <video>" Version 2.1.0.900.
Not for me anyways.
Changed September 11, 2011 02:53PM UTC by comment:7
Here's an interesting read about a similar issue on DivX forums:
http://labs.divx.com/node/16824
You gotta love their way of doing things.
Changed September 24, 2011 01:01PM UTC by comment:8
It seems this problem is fixed with the current DivX Web Player update:
My version:
Name: DivX Plus Web Player HTML5 <video>
Version: 2.1.2.126
You can use the following code to check if he has installed the broken Plugin and tell him to update the plugin:
$(document).ready(function(){ /* after the page has finished loading */ // Detect if there is a broken DivX plugin // Giving the DivX extension time to set up setTimeout(function() { try { $("body").append("<div></div>"); } catch (e) { alert("(EN) There is an error in your DivX Web Player Addon. Please update it with the following url:\\n(DE) Es existiert ein Problem mit Ihrem DivX Web Player Addon. Wir bitten Sie, dieses unter folgendem Link zu aktualisieren:\\n(IT) Esiste un problem con l'addon DivX Web Player. Si prega di aggiornare con il seguente link:\\n\\nhttp://www.divx.com"); } }, 2000); }
Changed October 22, 2011 10:17PM UTC by comment:9
Thank you Probot! I was searching far and wide for this answer and your solution worked perfectly. Much appreciated.
Changed June 19, 2012 03:55PM UTC by comment:10
This solve for me...
I was trying this whithout success:
item = $('<div>testing...</div>') $("#some_id").append(item);
and the correct is:
var item = $('<div>testing...</div>') $("#some_id").append(item);
Changed January 28, 2013 01:42AM UTC by comment:11
I incurred this error when I misnamed one of the parameters to a getJSON call.
amountaid: xvalue instead of amountpaid:
It was hard to track down until I used Firefox to load the page and Firefox's web console debugger, which gave up the error:
[12:39:17.881] NS_ERROR_XPC_BAD_CONVERT_JS: Could not convert JavaScript argument @ http://extensions/hunterbadminton/assets/js/jquery-1.8.3.js:7218
In both cases the error message is arcane, but Firefox actually led me to what was wrong and I spotted the error immediately.
Thanks for submitting a ticket to the jQuery Project. Unfortunately, because we would consider this type of ticket an edge-case which is likely down to the DivX extension and it's behaviour with IE as opposed to jQuery core (and this is the first I've ever read about it) we're likely not going to be able to dedicate time and resources to getting this patched. We would however be willing to consider adopting a patch if you or another member of the community were interested in discovering an acceptable workaround. Please bare in mind this would of course be dependant on the bug actually being something a number of people are experiencing as opposed to a small minority.