ripple-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "sylvain garden (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (RIPPLE-87) Ripple plaforms don't fire deviceReady after page changes in multiple pages application
Date Tue, 26 May 2015 06:47:17 GMT

     [ https://issues.apache.org/jira/browse/RIPPLE-87?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

sylvain garden updated RIPPLE-87:
---------------------------------
    Description: 
My cordova app consists in a "portail" of several apps invoking each other thanks to html
links or window.location=... calls.

I spent days trying to understand why *cordova plugins didn't load in any page but the first
visited page* of my app.

It turned out that _onDeviceReady_ was fired only in the first app page but not on the subsequent
pages  (as told in the console actually).


It might be due to this sequence of code in ripple.js:
{code:js}
   module.exports = bridge.exec;
   module.exports.init = module.exports.init || function() {    
      cordova.require("cordova/channel").onNativeReady.fire()
   }
{code}

I failed to understand if the cordova object should survive between pages change or not. I
guess it doesn't. However the "bridge.exec" object looks like it survives between page changes,
so the closure is setted only once and refers to a *outdated "cordova" object* within an outdated
containing closure.

By removing {{"module.exports.init ||"}} in such sequences, everything works as expected.


  was:
My cordova app consists in a "portail" of apps calling each other with html links or window.location=...
calls.

I spent days trying to understand why cordova plugins didn't load in any page but the first
visited page of my app.

It turned out that onDeviceReady was called only for the first app (as told in the console
actually).

I failed to understand if the cordova object should survive between pages change or not. I
guess it shoud not.

But I found the workaround to my issue at least: there is this sequence of code in ripple.js:
"
   module.exports = bridge.exec;
   module.exports.init = module.exports.init || function() {    
      cordova.require("cordova/channel").onNativeReady.fire()
   }
"

According to my understanding, the bridge.exec object does survive between page changes, so
the closure is setted only once and refers to a outdated "cordova" in an old (and replaced
since) outer closure.

I removed "module.exports.init ||" in such sequences and now everything works as expected.



> Ripple plaforms don't fire deviceReady after page changes in multiple pages application
> ---------------------------------------------------------------------------------------
>
>                 Key: RIPPLE-87
>                 URL: https://issues.apache.org/jira/browse/RIPPLE-87
>             Project: Apache Ripple
>          Issue Type: Bug
>            Reporter: sylvain garden
>              Labels: initialisation
>
> My cordova app consists in a "portail" of several apps invoking each other thanks to
html links or window.location=... calls.
> I spent days trying to understand why *cordova plugins didn't load in any page but the
first visited page* of my app.
> It turned out that _onDeviceReady_ was fired only in the first app page but not on the
subsequent pages  (as told in the console actually).
> It might be due to this sequence of code in ripple.js:
> {code:js}
>    module.exports = bridge.exec;
>    module.exports.init = module.exports.init || function() {    
>       cordova.require("cordova/channel").onNativeReady.fire()
>    }
> {code}
> I failed to understand if the cordova object should survive between pages change or not.
I guess it doesn't. However the "bridge.exec" object looks like it survives between page changes,
so the closure is setted only once and refers to a *outdated "cordova" object* within an outdated
containing closure.
> By removing {{"module.exports.init ||"}} in such sequences, everything works as expected.



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

Mime
View raw message