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