[ 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)