From Marc Trudel by email
the solution came to me. Here is the patch, its basically 3 lines - the part in sectionLoaded is just be reindenting :D
root<a class='mention' href='https://github.com/mushin'>@mushin</a>:/var/www/dev.mu-shin.ca/piwik/plugins/CoreHome# svn diff ./templates/broadcast.js
Index: templates/broadcast.js
===================================================================
--- templates/broadcast.js (revision 1200)
+++ templates/broadcast.js (working copy)
@@ -158,15 +158,20 @@
$('#loadingPiwik').show();
$('#content').hide();
+ // OFC ofc_resize call fix - remove the object before the container
+ $("object").each(function(){
+ $(this).remove();
+ });
+
broadcast.lastUrlRequested = urlAjax;
function sectionLoaded(content)
{
if(urlAjax == broadcast.lastUrlRequested) {
- $('#content').html( content ).show();
- $('#loadingPiwik').hide();
- broadcast.lastUrlRequested = null;
- }
+ $('#content').html( content ).show();
+ $('#loadingPiwik').hide();
+ broadcast.lastUrlRequested = null;
+ }
}
piwikMenu.activateMenu(
broadcast.getParamValue('module', urlAjax),
Basically, here's why you had a problem - ofc implements an ExternalInterface so that if you resize the flash container, it can call a javascript function. This is good for, say, a flash with 100% width and a jquery ui resizeable container. Problem comes when you destroy the container: that triggers the resize function (beccause the container "changes size"), but when it comes back to make the externalinterface js call, the internal script does a document.getElementById with the flash object id... and returns null.
So to avoid the resize call, you must destroy implicitly the object first, and the container later.
Just a note - this is also a bug in other versions of IE - IE7 and IE8 are also having this problem.
Also, I know the fix should have been reduced to
$("object").remove();
but... well, that could go in too :).
Confirmed that this fixes the "'null' is null or not an object" error. Thanks.
(In [1235]) Fixes #798 - null is null or not an object error