You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Andrew Grieve (JIRA)" <ji...@apache.org> on 2014/03/06 15:48:43 UTC
[jira] [Comment Edited] (CB-5671) facilitate dynamic loading of
cordova plugins
[ https://issues.apache.org/jira/browse/CB-5671?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13922579#comment-13922579 ]
Andrew Grieve edited comment on CB-5671 at 3/6/14 2:47 PM:
-----------------------------------------------------------
[~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:
{code}
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;
}
{code}
was (Author: agrieve):
[~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)