locked
HELP! KB3008923 breaks window.dialogArguments in secondary windows! RRS feed

  • Question

  • We have an enterprise app that heavily uses modal dialogs.  This morning we were greeted with a flood of support requests that after a Windows update last night, dialogs no longer work.

    We isolated the issue that window.dialogArguments on secondary window no longer works.

    I have a test case below that you can verify, window.dialogArguments in test2.html shows 'undefined' on machines that have the KB3008923 update, but "[object Object]" when the update is uninstalled:

    test0.html:

    <!DOCTYPE html>
    <html>
       <body>
          <button onclick="window.showModalDialog('test1.html',new Object());">clickme</button>
       </body>
    </html>

    test1.html:

    <!DOCTYPE html>
    <html>
       <head>
          <script>
    	 alert(window.dialogArguments);
          </script>
       </head>
       <body>
          <button onclick="window.showModalDialog('test2.html',new Object());">clickme</button>
       </body>
    </html>

    test2.html:

    <!DOCTYPE html>
    <html>
       <head>
          <script>
    	 alert(window.dialogArguments);
          </script>
       </head>
       <body>
       </body>
    </html>


    • Edited by bryanangler2 Wednesday, December 10, 2014 4:14 PM
    Wednesday, December 10, 2014 4:01 PM

Answers

  • We have same issue using CRM 2013 as it is no longer possible to add custom javascript and se state and parameters in the Form Dialog  - Form Properties  - Event Handlers. 

    Some web application modal dialog boxes don't work correctly in Internet Explorer 11 after you install update 3008923 (17 Dec-14)
    http://support2.microsoft.com/kb/3025390/en-us

    ~Robear Dyer (PA Bear) MS MVP-Windows Client since 2002 Disclaimer: MS MVPs neither represent nor work for Microsoft

    Wednesday, December 17, 2014 8:42 PM

All replies

  • +1 - Our enterprise app is experiencing the same issue - initial modal dialog opens fine, but any modal dialog opened from within that dialog shows undefined dialog arguments, causing the opening dialog to stall and display a blank window.  The only "workaround" we have found so far is to uninstall Security Update for Microsoft Windows (KB3008923).
    Wednesday, December 10, 2014 10:09 PM
  • I have opened up an issue on this internally, and we have a team of engineers investigating the matter right now.
    • Proposed as answer by EricLaw [Edge] Thursday, December 11, 2014 8:19 PM
    Thursday, December 11, 2014 12:33 AM
  • Thursday, December 11, 2014 4:45 AM
  • Exactly.

    We had the same problem .

    window.returnValue becomes undefined after this update for internet explorer 11.

    The only solution we found now is to uninstall this update.

    After uninstalling the update ,everything becomes normal.

    Peter

    from C.L.G consultant en informatique.

    Montreal.

    Thursday, December 11, 2014 5:03 AM
  • We are having the same issue, and trying to explain to 1000's of customers across many different organizations how to uninstall a particular patch is very difficult.  Does anybody have a better way of passing a source window reference to the modal window to solve this in the interim?

    Mark Adams

    Thursday, December 11, 2014 5:36 AM
  • We have the same problem. We are advising our customers to uninstall KB3008923.

    If you only use the second argument of showModalDialog to pass data from 1 modal to another, you could solve this by setting and getting a value from a cookie, or by using Javascript localStorage.

    But this problem must be solved by a hotfix from Microsoft. The argument is there to be used, and it is used in a lot of applications.

    If it is deprecated, then MS should inform us about that before they do an update !


    Callant


    • Edited by Callant Thursday, December 11, 2014 7:41 AM
    Thursday, December 11, 2014 7:36 AM
  • Hi Jonathan! I've prepared a web page for reproducing this issue.
    Thursday, December 11, 2014 9:24 AM
  • A registry key can resolve your problems...

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DISABLE_INTERNAL_SECURITY_MANAGER]

    "iexplore.exe"=dword:00000001

    Greetings

    Thursday, December 11, 2014 9:58 AM
  • A registry key can resolve your problems...

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DISABLE_INTERNAL_SECURITY_MANAGER]

    "iexplore.exe"=dword:00000001

    Greetings

    Do we know what the consequences are of editing the regisrty as described?
    Thursday, December 11, 2014 11:45 AM
  • A registry key can resolve your problems...

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DISABLE_INTERNAL_SECURITY_MANAGER]

    "iexplore.exe"=dword:00000001

    Greetings

    This looks like a solution - BUT - Is it safe? What exactly are we turning off here?

    Dan Towers BaySoft Estate Agency Software Conveyancing Comparison Services

    Thursday, December 11, 2014 11:48 AM
  • Our enterprise app is suffering from the same issue since the update but under slightly different circumstances. We have a windows forms application used by the vast majority of our clients. This uses the WebBrowser control to view our web application.

    Since the update, even a single showModalDialog window displays this behaviour of dialogArguments being undefined and not being able to set the returnValue. This breaks many areas of our application that rely on the returnValue in order to make a decision on where/whether to redirect the user.

    • Proposed as answer by Alexhandro Thursday, December 11, 2014 1:39 PM
    Thursday, December 11, 2014 12:26 PM
  • it affects Microsoft Dynamics CRM 4.0 and 2011 in IE11!
    Some lookup dialogs and editing columns at advanced find break.

    I hope the update will be fixed soon.


    CRM Consultant, World-direct.at

    Thursday, December 11, 2014 1:17 PM
  • Workaround for window.returnValue not being passed back is to have a function in the calling page e.g. function acceptdata(param1, param2, etc) which stores the values in global variables in the page, then from the modal window call that function using the top object e.g. top.acceptdata(param1, param2, etc) where you would normally use window.returnValue. The calling page will then have the values in the global variables when the modal window is closed.
    Thursday, December 11, 2014 1:34 PM
  • the modal window page can access it's parent page's global variables?  
    Thursday, December 11, 2014 1:41 PM
  • This update also prevents the Windows Defender service from starting up on my WHS 2011. Just thought I'd add that tidbit in case others wish to troubleshoot a relationship. Uninstalling the update restores Defender's ability to start up as a service on boot again.
    Thursday, December 11, 2014 2:01 PM
  • The WebBrowser controls are widely used by our company software products.

    Since Microsoft fixed their Microsoft Outlook problem mentioned here "http://support.microsoft.com/kb/3020809/en-us#appliesto" with the KB3008923 update, our support team is smashed with the flood of customers’ claims. The KB3008923 made impossible normal functionality of our application.

    We also would like to express our outrage regarding this issue.

    Thursday, December 11, 2014 2:09 PM
  • I have opened up an issue on this internally, and we have a team of engineers investigating the matter right now.

    Thanks for the quick response - As this is marked as an 'Important' update, the Windows Updater will re-download this unless it is hidden.  We expect our clients will have their IT departments do this and the concern is that they will miss out on all of the other items in the cumulative package unless the entire set of updates is re-packaged.
    Thursday, December 11, 2014 2:20 PM
  • The registration key couldn't solve this problem at me...
    Thursday, December 11, 2014 2:24 PM
  • Workaround for window.returnValue not being passed back is to have a function in the calling page e.g. function acceptdata(param1, param2, etc) which stores the values in global variables in the page, then from the modal window call that function using the top object e.g. top.acceptdata(param1, param2, etc) where you would normally use window.returnValue. The calling page will then have the values in the global variables when the modal window is closed.

    That is not correct at the moment. TOP simply returns a reference to the current page for a modal window... and window.opener is undefined. THIS IS HOPLESS. Come on Microsoft - Fix it!!

    Dan Towers BaySoft Estate Agency Software Conveyancing Comparison Services

    Thursday, December 11, 2014 2:39 PM
  • Hi Jonathan,

    what are the consequences of the registry key FEATURE_DISABLE_INTERNAL_SECURITY_MANAGER ?


    Callant

    Thursday, December 11, 2014 2:44 PM
  • At a minimum, Microsoft should update the "Known Issues" section of the KB3008923 article to warn people about this problem.  For now, the only workarounds I am aware of are to either uninstall the update, or make that FEATURE_DISABLE_INTERNAL_SECURITY_MANAGER registry setting (but I'm not sure what else that registry entry does).
    Thursday, December 11, 2014 3:16 PM
  • One thing I have tried (with mixed results) is changing the code around so that the opening window constantly calls a function (or checks a variable) on the modal window to see if the page has finished whatever it needs to do, and what values need to be passed back, and then closes the page.  This doesn't work if somebody manually closes the modal window with the "x", but if they click a save button or something you can just set variables on that modal window and wait for the opening window to get the data and close the window.  But this is a substantial rewrite and if it is used all over the place on a website it isn't very practical.

    Psuedocode example:

    Opening Page

    objWindow = showmodaldialog....

    window.setInterval ('checkWindow", 100);

    function checkWindow()

    {

    if (objWindow.<somevariable> = <somevalue>)

    { get the data, then objWindow.close()}

    }

    then on the modal window, have whatever button or action indicates it is done with it's task set <Somevariable> to <somevalue> as well as set other variables to other values that need to be passed back.


    Mark Adams


    • Edited by Scrubinski Thursday, December 11, 2014 3:43 PM
    Thursday, December 11, 2014 3:31 PM
  • One thing I have tried (with mixed results) is changing the code around so that the opening window constantly calls a function (or checks a variable) on the modal window to see if the page has finished whatever it needs to do, and what values need to be passed back, and then closes the page.  This doesn't work if somebody manually closes the modal window with the "x", but if they click a save button or something you can just set variables on that modal window and wait for the opening window to get the data and close the window.  But this is a substantial rewrite and if it is used all over the place on a website it isn't very practical.

    Psuedocode example:

    Opening Page

    objWindow = showmodaldialog....

    window.setInterval ('checkWindow", 100);

    function checkWindow()

    {

    if (objWindow.<somevariable> = <somevalue>)

    { get the data, then objWindow.close()}

    }

    then on the modal value, have whatever button or action indicates it is done with it's task set <Somevariable> to <somevalue> as well as set other variables to other values that need to be passed back.


    Mark Adams

    showModalDialog does not return a window pointer, but returns the window.returnValue of the modal dialog. Its also blocking, so setInterval would not run until after the dialog closes.
    Thursday, December 11, 2014 3:46 PM
  • Ugh.  So has anybody had any luck fixing this with a code workaround?

    Mark Adams

    Thursday, December 11, 2014 3:48 PM
  • // ****************************************************************************
    // *** A WORKAROUND FOR THE DAMAGED CAUSED BY  KB3008923
    // *** https://connect.microsoft.com/IE/feedback/details/1051452/help-kb3008923-breaks-window-dialogarguments-in-secondary-windows
    // *** © BaySoft Software Development Ltd.
    // *** Software Engineer: Dan Towers
    // *** http://www.baysoft.co.uk
    // *** daniel.towers@baysoft.co.uk
    // *** 11/DEC/2014
    // *** TESTED AND FIXED A LARGE ENTERPRISE APPLICATION
    // ****************************************************************************


    // *********************************
    // UTILITY FUNCTIONS
    // *********************************

    // SAVE A COOKIE
    function setCookie(cname, cvalue, exdays) {
        var d = new Date();
        d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
        var expires = "expires=" + d.toUTCString();
        document.cookie = cname + "=" + cvalue + "; " + expires;
    }

    // LOAD A COOKIE
    function getCookie(cname) {
        var name = cname + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1);
            if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
        }
        return "";
    }


    // STORE THE RETURN ARGUMENTS TO A COOKIE
    function storeArgs(ReturnArgs) {
        setCookie("RETURN_ARGS", JSON.stringify(ReturnArgs), 1);
    }

    // USEFUL FUNCTION (NOT WRITTEN BY US) FOR GETTING A NAMED QUERY STRING PARAMETER
    function getParameterByName(name) {
       return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [, ""])[1].replace(/\+/g, '%20')) || null;
    }

    // *********************************
    // OPEN THE POPUP
    // *********************************


    // OUR FUNCTION FOR POPPING UP A MODAL DIALOG
    function PopUp(MyArgs, dWidth, dHeight, dLeftPos, dTopPos, dCenter, dHide, dEdge, dHelp, dResizable, dScroll, dStatus, dUnadorned, PopUpTitle) {
        // CLEAR THE RETURN COOKIE
        setCookie("RETURN_ARGS", "", -1);
        // INITIALISE THE POPUP WINDOW SETTINGS
        var WinSettings = 'dialogWidth:' + dWidth;
        WinSettings += ';dialogHeight:' + dHeight;
        WinSettings += ';dialogLeft:' + dLeftPos;
        WinSettings += ';dialogTop:' + dTopPos;
        WinSettings += ';center:' + dCenter;
        WinSettings += ';dialogHide:' + dHide;
        WinSettings += ';edge:' + dEdge;
        WinSettings += ';help:' + dHelp;
        WinSettings += ';resizable:' + dResizable;
        WinSettings += ';scroll:' + dScroll;
        WinSettings += ';status:' + dStatus;
        WinSettings += ';unadorned:' + dUnadorned;
        // CONVERT THE ARGS ARRAYTO A QUERY STRING FRIENDLY STRING
        var URLArgs = encodeURIComponent(JSON.stringify(MyArgs));
        // OPEN THE POPUP - PASS IN THE EMERGENCY ARGS ON THE QUERYSTRING
        var ReturnArgs = window.showModalDialog("/PopUp.aspx?title=" + PopUpTitle + "&ARGS=" + URLArgs, MyArgs, WinSettings);
        // IF THE RETURN ARGS ARE NULL, CHECK THE RETURN COOKIE INSTEAD
        if (ReturnArgs  == null) {
            ReturnArgs  = JSON.parse(getCookie("RETURN_ARGS"));
        }
        return ReturnArgs;
    }


    // *********************************
    // GETTING THE ARGS ONCE THE POPUP IS OPEN
    // *********************************


    // WHEN THE POPUP OPENS, CHECK TO SEE THE window.dialogArguments are defined. If not, get them from the QueryString instead.
    function initPop() {
        // SET THE WINDOW DIALOG ARGUMENS IF THEY'RE MISSING FROM THE QUERYSTRING
        window.dialogArguments = undefined;
        if (!window.dialogArguments) {
         window.dialogArguments = JSON.parse(getParameterByName('ARGS'));
        }
        MyArgs = window.dialogArguments;
    }

    // *********************************
    // CLOSING THE POPUP
    // *********************************

    function Done(Result) {
        var MyArgs = new Array(Result);
        window.returnValue = MyArgs;
        storeArgs(MyArgs);
        window.close();
    }


    Dan Towers BaySoft Estate Agency Software Conveyancing Comparison Services

    Thursday, December 11, 2014 3:56 PM
  • Our company supports the office with 250 users. Entire firm is not able to work because of issue with returnValue caused by this update. Is there any ETA that this issue will be fixed?  

    Thursday, December 11, 2014 4:23 PM
  • Doesn't work for us -- in our usage the calling window always passes object and window references as arguments to the dialog, so the dialog can work with those objects.  you cant do window references with json.  MS PLEASE FIX THIS YESTERDAY!!!
    Thursday, December 11, 2014 5:06 PM
  • Uninstalling Windows Update KB3008923 fixed my problems until Microsoft puts out a fix.

    I reported this bug to Microsoft last night.

    just do a google search for this phrase:

    IE Update 11.0.15 Breaks javascript references to window.dialogArguments: dialogArguments is undefined

    I would post the link to it but this site will not let me because it says: 

    Body text cannot contain images or links until we are able to verify your account

    I created an account yesterday... I guess some human has to verify my account?!



    To Uninstall the Update

    1. Open Installed Updates by going to Control Panel, clicking Programs, and then, under Programs and Features, clicking View installed updates.
    2. Click the update that you want to remove (KB3008923), and then click Uninstall. If you're prompted for an administrator password or confirmation, type the password or provide confirmation.

    you will have to reboot




    Thursday, December 11, 2014 5:25 PM
  • Does the behavior persist if you leave KB3008923 installed but uninstall KB3004394?

    ~Robear Dyer (PA Bear) MS MVP-Windows Client since 2002 Disclaimer: MS MVPs neither represent nor work for Microsoft

    Thursday, December 11, 2014 6:49 PM
  • Also..Outlook 2013 breaks with this patch. All the message preview options must be disabled, and Outlook started using the /cleanviews flag before it works again properly.

    Inexcusable, Microsoft....

    Thursday, December 11, 2014 6:54 PM
  • Can you guys post up what versions of IE you are using?

    I think this bug is impacting IE9 specifically.  If you are suffering with other versions of IE can you please report back?

    Has anyone opened an official support case, if so can you post the SRX number just so we can make sure it's being officially investigated.

    Thursday, December 11, 2014 8:09 PM
  • Actually from what I have seen so far, the update impacts only IE 11.

    Thursday, December 11, 2014 8:19 PM
  • I've got a number of users with IE11 that this has impacted, myself included. I also confirmed that the issue does not occur in IE9 or IE10 for multiple people around my office.
    • Edited by Mathachew Thursday, December 11, 2014 9:44 PM
    Thursday, December 11, 2014 8:29 PM
  • We are seeing this with IE version 11, using Windows 7 and 8...I have a Support Request Number from Microsoft 114121112155638...

    We will be implementing a work around tonight to replace the missing window.returnValue using

    window.sessionStorage.setItme in the nested (called Dialog)...

    and window.sessionStorage.getItem and window.sessionStorage.removeItem in the calling dialog...

    Thursday, December 11, 2014 8:30 PM
  • Whoops...that is window.sessionStorage.setItem...

    Thursday, December 11, 2014 8:31 PM
  • WinForms, WebBrowser control.

    Thousands of customers are unable to use the app.

    Uninstalling the KB3008923 update is done manually by our team all day today for our customers who for the most part cannot do it themselves.

    This is costing us and our customers real dollars. So disappointing...

    Thursday, December 11, 2014 8:40 PM
  • IE 10...

    Thursday, December 11, 2014 8:45 PM
  • Looks like this is where they broke it, messing around with dialogArguments: https://support.microsoft.com/kb/3020809

    looks like the engineer didn't bother testing his "fix" with showModalDialog


    Thursday, December 11, 2014 8:46 PM
  • Same problem

    How did you uninstall this update?

    Thursday, December 11, 2014 9:00 PM
  • I would rather be Waterboarded...
    Thursday, December 11, 2014 9:29 PM
  • I can not stress enough how significant this is to our client base. We have promoted IE through the years as the browser platform of choice. Please put out an emergency fix ASAP. It is a major ordeal to try to walk thousands of our customers on how to uninstall a Microsoft Security update!!!!!
    • Edited by mrdatman Thursday, December 11, 2014 9:45 PM
    Thursday, December 11, 2014 9:44 PM
  • So far the best workaround is to uninstall this patch.. Just waiting for MS to realese hotfix ..
    Thursday, December 11, 2014 9:49 PM
  • To Uninstall the Update

    1. Open Installed Updates by going to Control Panel, clicking Programs, and then, under Programs and Features, clicking View installed updates.
    2. Click the update that you want to remove (KB3008923), and then click Uninstall. If you're prompted for an administrator password or confirmation, type the password or provide confirmation.

    you will have to reboot

    Thursday, December 11, 2014 10:09 PM
  • I guess there is a glimmer of hope.  Microsoft has updated the "Known Issues" section of the KB article to say this:

    We are aware of some reports of functional issues on sites that use nested modal dialog boxes on Internet Explorer 11 that occur after you install this security update.  Microsoft is researching this problem and will post more information in this article when the information becomes available.

    Thursday, December 11, 2014 10:13 PM
  • Only affecting IE11
    Friday, December 12, 2014 1:15 AM
  • I guess there is a glimmer of hope.  Microsoft has updated the "Known Issues" section of the KB article to say this:

    We are aware of some reports of functional issues on sites that use nested modal dialog boxes on Internet Explorer 11 that occur after you install this security update.  Microsoft is researching this problem and will post more information in this article when the information becomes available.


    I offer Microsoft more exact phrase: We are aware of thousands reports of functional issues on sites and applications ....

    • Edited by Alexhandro Friday, December 12, 2014 10:11 AM
    Friday, December 12, 2014 9:34 AM
  • Please rollout a fix soon, after chrome stopped showModalDialog we cannot even use IE anymore for our 1000+ users webapplication? This is a BIG problem.
    Friday, December 12, 2014 4:18 PM
  • Our enterprise app is experiencing same with this patch.  I was just about to get into a long debugging session to figure out what's wrong; we make heavy use of modal dialogs - as I'm sure just about everybody does.  Hope MS fixes this one quickly.  The exposure here is HUGE.  Someone tell me how such a break could have gone unnoticed in Redmond?  It's not like this is some obscure little problem down deep in an application, it breaks some really BASIC functionality!

    Friday, December 12, 2014 4:40 PM
  • I just wanted to add that this same issue with update KB3008923 breaks core functionality in MS Dynamics CRM 2011 for all our IE11 users running Windows 7 and Windows 8. For example, it's impossible to add an address to an order or invoice using the lookup feature. This is not an add-on or a customization. This is a BASIC feature of CRM and this update makes order entry impossible. Along with others, the only fix we've found is to uninstall this update and hide it so it doesn't re-install itself. I cannot stress enough how big of a problem this is. MS, please rollback this update until a fix is found.
    • Edited by RobertR_HC Friday, December 12, 2014 5:00 PM
    Friday, December 12, 2014 4:58 PM
  • Our application is also affected.

    We got over 100 support requests the day after the update.

    We are an ISV that develops a browser based financial accounting application. Our customers are unable to work with our application when they have KB3008923 installed.

    Microsoft should immediately stop delivering this patch until the problem is fixed.


    Friday, December 12, 2014 7:48 PM
  • Enterprise app of 1000+ law enforcement officers - this MUST be fixed asap!
    Friday, December 12, 2014 7:52 PM
  • Is there any solution from microsoft to this BUG??? Thanks in advance Jonathan
    Friday, December 12, 2014 8:27 PM
  • See:

    .

    <EDIT>
    Some web application modal dialog boxes don't work correctly in Internet Explorer 11 after you install update 3008923 (17 Dec-14)
    http://support2.microsoft.com/kb/3025390/en-us
    </EDIT>

    Friday, December 12, 2014 8:48 PM
  • Yes, one of our clients is facing the same issue. Advanced find search dialog is broken and email templates dialog too in CRM 2011. As temporary fix, they have uninstalled this IE update.
    Friday, December 12, 2014 8:58 PM
  • IE 11 

    version : 11.0.9600.17501

    Update version : 11.0.15

    ................................................

    Service ticket# 114121112156752

    Friday, December 12, 2014 9:03 PM
  • Can we please get an update on when Microsoft is going to:

    a) Pull the update from continued distribution until the issue is resolved, and;

    b) Correct the update and make the hotfix available for general release?

    I have had a case open with Microsoft support for the past two days, and frankly all I've been getting is lip service. They're literally repeating the same sentence to me over and over again. "This has been escalated to our senior engineer and is being worked on."

    I have tried to be patient, but as you can see, the patience of IE11 users is running thin. I literally have received over 100 telephone calls about this issue, and now spend countless hours instructing people how to uninstall the update.

    Friday, December 12, 2014 9:24 PM
  • I have a solution for the problem of undefined return value,but it will require to search for all modal dialogs.

    Same solution will work for dialogArguments.

    Here is the solution (by using xmlhttp ) :

    Create an aspx page :

    This page will send back XML .

    The page accepts 3 parameters :

    action: setValue or getValue

    paramName :name for a return value from the modal window. This will be the session variable name.

    paramValue :this is the value to pass from the modal window before closing.

    The request to the page will be done done calling xmlHttpRequest where async=false

    (will wait for the response)

    Here is the ASPX page called SaveJavaScriptValues

    public partial class SaveJavaScriptValues : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {


                string strResponse = string.Empty;


                if (Request.QueryString["action"] != null && Request.QueryString["action"] == "setValue")
                {
                    string strParamName = Request.QueryString["paramName"];
                    string strParamValue = Request.QueryString["paramValue"];
                    Session["javascriptValue_" + strParamName] = strParamValue;
                    strResponse = strParamValue;
                }


                if (Request.QueryString["action"] != null && Request.QueryString["action"] == "getValue")
                {
                    string strParamName = Request.QueryString["paramName"];

                    if (Session["javascriptValue_" + strParamName] != null)
                    {
                        strResponse = Convert.ToString(Session["javascriptValue_" + strParamName]);
                        //set session to null for next time .
                        //once requested ,should be setted again .
                        Session["javascriptValue_" + strParamName] = null;


                    }
                    else
                    {
                        strResponse = "undefined";

                    }


                }


                Response.Clear();
                string strXml = "<?xml version='1.0' encoding='UTF-8' ?>";
                strXml += "<Root ><Answer>" + "<![CDATA[" + strResponse + "]]>" + "</Answer></Root>";
                Response.ContentType = "text/xml";
                Response.Write(strXml);
                Response.End();

            }
        }

    After that create a javascript file and put there the fallowing functions:

    function setJavaScriptValue(path,paramName,paramValue) {
        var xmlhttp;
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        }
        else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        var url = path + "/" + "SaveJavaScriptValues.aspx?t=" + Math.random();
        url += "&action=setValue";
        url += "&paramName=" + paramName;
        url += "&paramValue=" + paramValue;


        xmlhttp.open("GET", url, false);
        xmlhttp.send();
        return (paramValue);
    }


    function getJavaScriptValue(path, paramName) {
        var xmlhttp;
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        }
        else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        var url = path + "/" + "SaveJavaScriptValues.aspx?t=" + Math.random();
        url += "&action=getValue";
        url += "&paramName=" + paramName;
     
        xmlhttp.open("GET", url, false);
        xmlhttp.send();
        var strResponse = xmlhttp.responseXML.selectSingleNode("/Root/Answer").text
        return (strResponse);
    }

    Where PATH is the your path relative to the file from where you call the functions.

    Now from your page call javascript function before closing ModalWindow:

    for example:

    var myValueToReturnFromModalWindow="test";

    setJavaScriptValue("../General", "paymentBillingType",myValueToReturnFromModalWindow ));

    //where ../General the folder where you store the aspx file

    //paymentBillingType is your parameter name

    window.close();

    and now from the page the calls the showModalDialog

    var returnValue = getJavaScriptValue("../General", "paymentBillingType");

    and now you have the return value;

    it is important to call getJavaScriptValue always after closing the dialog.

    By calling the function ,it will not only get the value ,but also reset it to undefined for future use.

    (because user might close the modal window by clinicking the X button ,without returning actually any value)

    Thanks,

    I hope it will help somebody.

    Friday, December 12, 2014 9:45 PM
  • This solution requires you to include this JavaScript on all your pages. It will not require any code changes. The only way this would fail is like the poster above said where he was passing a window object to the modal dialog. If you are passing an object that you want to modify then you might be out of luck. But I suspect this will fix the vast majority of issues that people are seeing. It's definitely a hack of course until MS fixes the issue, but it's SOMETHING. 
    try {
        var isIE11 = !!(navigator.userAgent.match(/Trident/) && navigator.userAgent.match(/rv[: ]11/));
        if (isIE11) {
            
            Object.defineProperty(window, 'returnValue', {
                get: function () {
                    return window.oldReturnValue;
                },
                set: function (newValue) {
                    window.oldReturnValue = newValue;
                    sessionStorage.setItem("returnValue", JSON.stringify(newValue));
                },
                enumerable: true,
                configurable: true
            });
            
            Object.defineProperty(window, 'dialogArguments', {
                get: function () {
                	
                		if (typeof window.newDialogArguments != "undefined") {
                			return window.newDialogArguments;
                		}
                		var retVal = sessionStorage.getItem("dialogArguments");
                    return window.newDialogArguments = retVal && JSON.parse(retVal);                                
                },
                set: function (newValue) {
                    sessionStorage.setItem("dialogArguments", JSON.stringify(newValue));
                },
                enumerable: true,
                configurable: true
            });
    
            var oldShowModalDialog = window.showModalDialog;
            window.showModalDialog = function (dialog, varArgIn, varOptions) {
                sessionStorage.setItem("returnValue", undefined);
                sessionStorage.setItem("dialogArguments", JSON.stringify(varArgIn));
                if (varOptions){
               		oldShowModalDialog(dialog, varArgIn, varOptions);
              	}
              	else{
              		oldShowModalDialog(dialog, varArgIn);
              	}
                var retVal = sessionStorage.getItem("returnValue");
                if (retVal === "undefined") return undefined;
                else return retVal && JSON.parse(retVal);            
                
            }
        }
    }
    catch (e) {
        alert(e);
    }


    Saturday, December 13, 2014 8:52 AM
  • Why hasn't the update been pulled until a fix is in place? The amount of support calls I'm taking because of this is ridiculous!
    Saturday, December 13, 2014 1:38 PM
  • I have a test case below that you can verify, window.dialogArguments in test2.html shows 'undefined' on machines that have the KB3008923 update, but "[object Object]" when the update is uninstalled:


    Thanks, tested with IE9 64bits incl. KB 3008923 on a Windows 7 box, I got two (object Object) after two "clickme". Same result with IE9 32bits. In other words, apparently I have a "worksforme".
    Saturday, December 13, 2014 5:17 PM
  • >The only way this would fail is like the poster above said where he was passing a window object to the modal dialog.This will also fail in IE11 if not running in standards mode

    Object doesn't support property or method 'defineProperty'
        description: "Object doesn't support property or method 'defineProperty'"
        message: "Object doesn't support property or method 'defineProperty'"
        number: -2146827850

    Saturday, December 13, 2014 7:44 PM
  • Originally Posted on Windows 8.1 IT Pro

    Hi Folks,

    I have confirmed KB3008923 compromises MS Baseline Security Analyzer's Results Reports by uninstalling the KB. MS BSA now works as before. I don't use IE so I can't help you there but I presume BSA uses some IE modules. I know that there are many problems with KB3008923 across many platforms so I was surprised I did not find any mention of it here?

    Best Regards,

    Crysta


    PhotM Phantom of the Mobile

    Saturday, December 13, 2014 9:57 PM
  • Microsoft released another update  3024777,that should remove the kb3008923.

    I installed the update ,but eventually it does not remove the kb3008923 .

    Both updates are showing on my computer as successfully installed.

    But I have the same problem as before.

    support.microsoft.com/kb/3024777?wa=wsignin1.0

    What's going with Microsoft ?

    Why they are making our live difficult ?

    Monday, December 15, 2014 2:15 PM
  • there is no fix for KB3008923 yet, as the KB3024777 update is available to remove KB3004394

    The KB 3004394 update that was dated December 10, 2014 can cause additional problems on computers that are running Windows 7 Service Pack 1 (SP1) and Windows Server 2008 R2 SP1. This includes the inability to install future updates. This new KB3024777 update is available to remove KB 3004394 from your computer.


    Monday, December 15, 2014 2:40 PM
  • We were able to install KB3008923 on a Windows 7 machine with IE 11 and break our showModalDialog reliant system.  Then we just Uninstalled KB3008923 manually and we were back in business.

    This is probably the fastest most reliable fix for an individual machine until Microsoft can correct this globally.

    Hopefully this little disaster will put browser makers on notice that developers have created great value exploiting features like showModalDialog to build very robust user friendly apps and we can't keep dropping powerful functionality from new browsers just because they are not useful for people watching cat videos on YouTube.  Just search: "Google kills showModalDialog API in Chrome 37 and does evil to Exchange

    I used to be able to convert keystrokes from upper to lower case and block letters from num".eric fields etc until somebody on a committee decided that we should no longer be allowed to change a character value on a keypress event.  With a little bit of JavaScript in a library, I was able to implement datatypes for in input widgets and use them across literally a thousand webapps forms.  It kills me when I see web pages used used by thousands of people that tell you how you MUST format your date, phone number or credit card number so the page won't break.

    What ever happened to "Don't be Evil"?  For that matter what ever happened to "THINK".

    Monday, December 15, 2014 2:48 PM
  • The problem is that KB3024777 does not remove eventually the kb3008923.

    You must remove it manually.

    Monday, December 15, 2014 2:59 PM
  • Why would this get installed to a Windows 7 SP 1 with Internet Explorer 9? The update states it is specific to Internet Explorer 11.

    Suggested migration steps. IMMEDIATELY Send MS update that removes this updates if IE 9 is detected/installed.

    My guess is there is a function(s) that is called in one of the IE 11 components that replaced IE 9 components with this update. The functions are calling IE 9 functions that do not exist unless IE 11 was loaded. 

    Side note to IE 9 users:

    IE 9 will no longer be the default IE version in Windows 7 system as of 1/2016. Since there is no IE 9 download (yet I hope) those software products that utilize IE 9 as the hosts for the software will either have to have a new version of their software with all their customers using it by then or they will not be able to load any new Windows 7 systems without an older image of Windows 7 with IE 9 on it. 

    Dell is already distributing Windows 7 with IE 11 as the default IE version.

    Search Microsoft - Internet Explorer Support Lifecycle Policy FAQ

     

    Monday, December 15, 2014 5:56 PM
  • You can uninstall this via script:

    @echo off
    wusa /uninstall /kb:3008923

    Please test before use. Use at your own risk.

    Monday, December 15, 2014 6:16 PM
  • Hello Jay Kean ,

    thank you.

    I tried

    wusa /uninstall /kb:3008923 

    and it works

    Monday, December 15, 2014 7:12 PM
  • A Small correction to my code posted before :

    In the function setJavaScriptValue  add encodeURIComponent

    var url = path + "/" + "SaveJavaScriptValues.aspx?t=" + Math.random();
        url += "&action=setValue";
        url += "&paramName=" + paramName;
        url += "&paramValue=" +  encodeURIComponent(paramValue);

    Here is again the code :

    Here is the solution (by using xmlhttp ) :

    Create an aspx page :

    This page will send back XML .

    The page accepts 3 parameters :

    action: setValue or getValue

    paramName :name for a return value from the modal window. This will be the session variable name.

    paramValue :this is the value to pass from the modal window before closing.

    The request to the page will be done done calling xmlHttpRequest where async=false

    (will wait for the response)

    Here is the ASPX page called SaveJavaScriptValues

    public partial class SaveJavaScriptValues : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {


                string strResponse = string.Empty;


                if (Request.QueryString["action"] != null && Request.QueryString["action"] == "setValue")
                {
                    string strParamName = Request.QueryString["paramName"];
                    string strParamValue = Request.QueryString["paramValue"];
                    Session["javascriptValue_" + strParamName] = strParamValue;
                    strResponse = strParamValue;
                }


                if (Request.QueryString["action"] != null && Request.QueryString["action"] == "getValue")
                {
                    string strParamName = Request.QueryString["paramName"];

                    if (Session["javascriptValue_" + strParamName] != null)
                    {
                        strResponse = Convert.ToString(Session["javascriptValue_" + strParamName]);
                        //set session to null for next time .
                        //once requested ,should be setted again .
                        Session["javascriptValue_" + strParamName] = null;


                    }
                    else
                    {
                        strResponse = "undefined";

                    }


                }


                Response.Clear();
                string strXml = "<?xml version='1.0' encoding='UTF-8' ?>";
                strXml += "<Root ><Answer>" + "<![CDATA[" + strResponse + "]]>" + "</Answer></Root>";
                Response.ContentType = "text/xml";
                Response.Write(strXml);
                Response.End();

            }
        }

    After that create a javascript file and put there the fallowing functions:

    function setJavaScriptValue(path,paramName,paramValue) {
        var xmlhttp;
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        }
        else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        var url = path + "/" + "SaveJavaScriptValues.aspx?t=" + Math.random();
        url += "&action=setValue";
        url += "&paramName=" + paramName;
        url += "&paramValue=" + encodeURIComponent(paramValue);


        xmlhttp.open("GET", url, false);
        xmlhttp.send();
        return (paramValue);
    }


    function getJavaScriptValue(path, paramName) {
        var xmlhttp;
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        }
        else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        var url = path + "/" + "SaveJavaScriptValues.aspx?t=" + Math.random();
        url += "&action=getValue";
        url += "&paramName=" + paramName;
     
        xmlhttp.open("GET", url, false);
        xmlhttp.send();
        var strResponse = xmlhttp.responseXML.selectSingleNode("/Root/Answer").text
        return (strResponse);
    }

    Where PATH is the your path relative to the file from where you call the functions.

    Now from your page call javascript function before closing ModalWindow:

    for example:

    var myValueToReturnFromModalWindow="test";

    setJavaScriptValue("../General", "paymentBillingType",myValueToReturnFromModalWindow ));

    //where ../General the folder where you store the aspx file

    //paymentBillingType is your parameter name

    window.close();

    and now from the page the calls the showModalDialog

    var returnValue = getJavaScriptValue("../General", "paymentBillingType");

    and now you have the return value;

    it is important to call getJavaScriptValue always after closing the dialog.

    By calling the function ,it will not only get the value ,but also reset it to undefined for future use.

    (because user might close the modal window by clinicking the X button ,without returning actually any value)



    Monday, December 15, 2014 7:17 PM
  • >The only way this would fail is like the poster above said where he was passing a window object to the modal dialog.This will also fail in IE11 if not running in standards mode

    True, but if you aren't running in standards mode, you've already failed. ;)
    • Edited by cpdog Monday, December 15, 2014 8:09 PM
    Monday, December 15, 2014 8:08 PM
  • Yes,My solution is good if your are passing string values, not complex  objects.

    Thanks

    Monday, December 15, 2014 8:11 PM
  • I have opened up an issue on this internally, and we have a team of engineers investigating the matter right now.

    So is this confirmation that Microsoft will be putting out a fix for this?  Thanks.
    Monday, December 15, 2014 9:14 PM
  • I hope that Microsoft will fix this ASAP. This function is used by all our customers.  Thanks.

    EasyTime.com

    Tuesday, December 16, 2014 10:57 AM
  • It's been 5 days now - Hope they fix this soon.

    Zivolich

    Tuesday, December 16, 2014 2:32 PM
  • Please Microsoft, make the fix now!

    It is a real cost for us

    Tuesday, December 16, 2014 5:48 PM
  • Do you have status on a hotfix - Telling our clients not to upgrade IE11 until we get one.

    czivolich@msn.com


    Zivolich

    Wednesday, December 17, 2014 3:24 PM
  • I have a status update. I spent the last week going around and uninstalling this update and hiding it from windows update to get operations going again. It seems Microsoft pushed it out AGAIN last night, so now were all back to square one.
    Wednesday, December 17, 2014 4:05 PM
  • Another correction to my solution is in the function getJavaScriptValue

    after you open the connection add the lines

      try {
            xmlhttp.responseType = 'msxml-document';
        }
        catch (e) { }

    Here is the function again (corrected):

    function getJavaScriptValue(path, paramName) {
        var xmlhttp;
        if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();

        }
        else {// code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        var url = path + "/" + "SaveJavaScriptValues.aspx?t=" + Math.random();
        url += "&action=getValue";
        url += "&paramName=" + paramName;
        xmlhttp.open("GET", url, false);
        try {
            xmlhttp.responseType = 'msxml-document';
        }
        catch (e) { }
        xmlhttp.send();
        var strResponse = xmlhttp.responseXML.selectSingleNode("/Root/Answer").text
        return (strResponse);
    }

    Wednesday, December 17, 2014 6:01 PM
  • Some web application modal dialog boxes don't work correctly in Internet Explorer 11 after you install update 3008923 (17 Dec-14)
    http://support2.microsoft.com/kb/3025390/en-us


    ~Robear Dyer (PA Bear) MS MVP-Windows Client since 2002 Disclaimer: MS MVPs neither represent nor work for Microsoft

    Wednesday, December 17, 2014 8:36 PM
  • We have same issue using CRM 2013 as it is no longer possible to add custom javascript and se state and parameters in the Form Dialog  - Form Properties  - Event Handlers.

    as the dialog adding javascript no longer works.

    Here Library Dropdown is empty and Function is empty

    Same is Comma separated list of parameters.

    Removing KB300923 fixed it

    The only other work around is to use CHROME and skip using IE

    Nice work Microsoft! 

    Wednesday, December 17, 2014 8:40 PM
  • We have same issue using CRM 2013 as it is no longer possible to add custom javascript and se state and parameters in the Form Dialog  - Form Properties  - Event Handlers. 

    Some web application modal dialog boxes don't work correctly in Internet Explorer 11 after you install update 3008923 (17 Dec-14)
    http://support2.microsoft.com/kb/3025390/en-us

    ~Robear Dyer (PA Bear) MS MVP-Windows Client since 2002 Disclaimer: MS MVPs neither represent nor work for Microsoft

    Wednesday, December 17, 2014 8:42 PM
  • Here is MS fix to install: http://support2.microsoft.com/kb/3025390/en-us

    and It takes a few minutes without rebooting

    Thursday, December 18, 2014 3:32 PM
  • Yep, It works and fix IE11 issue..

    Thursday, December 18, 2014 5:30 PM
  • Is there an echo in here?


    ~Robear Dyer (PA Bear) MS MVP-Windows Client since 2002 Disclaimer: MS MVPs neither represent nor work for Microsoft

    Thursday, December 18, 2014 9:10 PM