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

Andrew Grieve commented on CB-5671:
-----------------------------------

[~speg] What does the say for the cordova.js version at the top of the file (in 
comments)

The latest version of that function should look like:

{quote}
function findCordovaPath() {
    var path = null;
    var scripts = document.getElementsByTagName('script');
    var term = 'cordova.js';
    for (var n = scripts.length-1; n>-1; n--) {
        var src = scripts[n].src.replace(/\?.*$/, ''); // Strip any query param 
(CB-6007).
        if (src.indexOf(term) == (src.length - term.length)) {
            path = src.substring(0, src.length - term.length);
            break;
        }
    }
    return path;
}
{quote}

> facilitate dynamic loading of cordova plugins
> ---------------------------------------------
>
>                 Key: CB-5671
>                 URL: https://issues.apache.org/jira/browse/CB-5671
>             Project: Apache Cordova
>          Issue Type: Improvement
>          Components: CordovaJS
>    Affects Versions: 3.2.0
>         Environment: any
>            Reporter: Jon Whitlock
>            Assignee: Andrew Grieve
>              Labels: javascript
>         Attachments: Screen Shot 2014-03-06 at 8.49.27 AM.png
>
>
> Problem: Cordova expects resources to be loaded off the device filesystem.
> 1) On iOS this is very risky due to the turnaround time pushing hotfixes 
> through the App store.
> 2) In complex JS applications one needs to use a loader like require.js to 
> manage async loading (especially on mobile) & module dependancy management 
> (as cordova does internally).
> 3) When integrating with many 3rd-party services like auth/"social login" one 
> needs to have a public-facing page to call back to.
> Use case: We have a bunch of prereqs before cordova.js loads, so we have to 
> load cordova.js using require.js.  However to show localised error messages 
> we need the preferred language from the device to know which language to show 
> messaging in, so we need cordova loaded as part of auth prerequisites.
> Problematic Assumptions:
> a) findCordovaPath() assumes a script tag in the document loaded cordova.js 
> -- not the case with require.js or similar.
> b) injectPluginScript() assumes that cordova_plugins.js is in the same dir as 
> cordova.js
> So using plugins & dynamically loading Cordova is terminal, unless I hack 
> findCordovaPath() to return (in our case) the path where cordova.js is to be 
> found -- which is defined in a JS configuration file.
> I think it would be more robust to define the location of those file(s) in a 
> config file somewhere -- which could also facilitate dynamic loading of 
> cordova.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to