[ 
https://issues.apache.org/jira/browse/CB-8002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14316857#comment-14316857
 ] 

Rajat Paharia commented on CB-8002:
-----------------------------------

Based on the idea from [~Hirbod], while waiting for the official 3.8.0 release, 
I put this function into my app, and call it from some user-initiated actions 
that I know happen relatively frequently: (note that it's not totally generic 
as it references frameworks and variables from my app, but it's just to give 
you an idea). 

{code:title=killZombies|borderStyle=solid|language=JavaScript}
            killZombies: function() {
                //// Temporary JS workaround until iOS Platform 3.80 is 
available to deal with this bug in 3.70
                // https://issues.apache.org/jira/browse/CB-8002
                // delete extra gap://ready iframes.
                $ionicPlatform.ready(function() {
                    if ($rootScope.vars.isCordovaApp && 
angular.isDefined(device.platform) && 
                        device.platform.toUpperCase() == "IOS") {
                        var frames = document.getElementsByTagName("iframe");
                        var gapFrames = [];
                        angular.forEach(frames, function(value) {
                            if (value.src == "gap://ready") {
                                gapFrames.push(value);
                            }
                        });                    

                        // delete all but the last one. 
                        var deleteCounter = 0;
                        var totalLength = gapFrames.length;
                        if (gapFrames.length > 1) {
                            for (var i = gapFrames.length -2; i >= 0; i--) {    
                        
                                //console.log ("Deleting gapFrame " + i + " of 
" + totalLength);
                                angular.element(gapFrames[i]).remove();         
                   
                                deleteCounter++;
                            }
                        }
                        console.log ("Deleted " + deleteCounter + " gapFrames");
                    }
                });      
            },
{code}

> Creating a new div for every Js -> Native exec() call
> -----------------------------------------------------
>
>                 Key: CB-8002
>                 URL: https://issues.apache.org/jira/browse/CB-8002
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: iOS
>    Affects Versions: 3.7.0
>         Environment: Tested on multiple iOS 8.1 devices, simulators
>            Reporter: Serdar Onal
>            Assignee: Andrew Grieve
>            Priority: Critical
>             Fix For: 3.8.0
>
>
> Since the 3.7.0 update, when cordova does a Js to Native call using exec(), 
> somehow the underlying cordova.js is creating a "gap://ready" iframe on every 
> call. This means that if you made 1000 native calls you'll have 1000 divs on 
> the DOM.
> I believe this issue is of critical priority as it incurs a huge memory leak.
> Screenshot from safari inspector
> https://drive.google.com/file/d/0B94TXiq5ycp1anp6aGpTbjhPdG8/view?usp=sharing



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to