Can';t从第一个包含的javascript文件调用函数,从第二个包含的js文件调用函数

Can';t从第一个包含的javascript文件调用函数,从第二个包含的js文件调用函数,javascript,android,jquery,cordova,android-browser,Javascript,Android,Jquery,Cordova,Android Browser,我正在用ApacheCordova制作一个Android应用程序。Android 6.0默认使用Chrome,而Android 4.2.2(三星Galaxy S4 mini)则使用默认的Android浏览器 如果我没有弄错的话,那么应用程序在使用cordova编译并安装到Android操作系统后,将在默认的Android浏览器中“启动” 在默认Android浏览器中,加载时页面为空。但在Chrome中,一切都很好 问题出在默认的Android 4.2.2浏览器中。它在诺基亚1520(使用Wind

我正在用ApacheCordova制作一个Android应用程序。Android 6.0默认使用Chrome,而Android 4.2.2(三星Galaxy S4 mini)则使用默认的Android浏览器

如果我没有弄错的话,那么应用程序在使用cordova编译并安装到Android操作系统后,将在默认的Android浏览器中“启动”

在默认Android浏览器中,加载时页面为空。但在Chrome中,一切都很好

问题出在默认的Android 4.2.2浏览器中。它在诺基亚1520(使用Windows Phone操作系统)的默认浏览器中不工作

index.html:

<!DOCTYPE html>
<html>
    <head>
        <script src="js/jquery-3.1.1.min.js" type="text/javascript"></script>
        <script src="2.js" type="text/javascript"></script>
        <script src="1.js" type="text/javascript"></script> 
    </head>
    <body>
        <div id="content">
        </div>
    </body>
</html>
我试过的2

1.js:

$(文档).ready(函数(){
$('#content').html(“test3”);//工作正常。
showLogin();
});
2.js(此文件中没有任何内容可用):

$(文档).ready(函数(){
$('#content').html(“test1”);
函数showLogin(){
$('#content').html(`
测试2
`);
}
});

也许我错了,但我认为“$('#content').html(“test1”);”是crashing 2.js,showLogin从未调用过

我想试试这样的东西:

$(document).ready(function() {
    $('#content').html("<span>test1</span>");
});
function showLogin() {
    $('#content').html("<span>test2</span>");
}
function showLogin() {
        $('#content').html("<span>\
                            test2\
                            </span>");
}
function showLogin() {
        $('#content').html('<span>\
                            test2\
                            </span>');
}
$(文档).ready(函数(){
$('#content').html(“test1”);
});
函数showLogin(){
$('#content').html(“test2”);
}
或者至少单独使用showlogin函数来尝试它


希望有帮助

问题在2.js文件中

$('#content').html("<span>test1</span>");

function showLogin() {
    $('#content').html("<span>test2</span>");
});
$('#content').html(“test1”);
函数showLogin(){
$('#content').html(“test2”);
});
在最后一行中,您使用了小括号来阻止功能,因此它是未定义的。拆下卷曲支架后的小支架。
工作示例

所以Android 4.2.2股票浏览器有问题。调试输出不工作。你想在这个上面撞你的头多久

这里有一种解决方法:将文件写入多个文件中,并在将它们推出到.apk之前将它们合并,这样您将只得到一个文件。缺点是调试合并的文件可能会比较困难。但是,正如您所说,Android 6.0可以正常工作,所以使用它进行调试。Google fu展示了这些选项:和


另一个选择是看是否使用works。请参阅此以了解更多信息。

尝试一下,您可以在deviceready of 1.JS或事件触发调用上动态加载脚本:

var script = document.createElement('script');
script.src = //path of 2.JS file;
script.type = "text/javascript";
script.onload = function () {
     showLogin();//
};

该问题是由多行JavaScript字符串“`”的引号引起的

在我改变这一点之后:

function showLogin() {
    $('#content').html(`<span>
                        test2
                        </span>`);
}
函数showLogin(){
$('#content').html(`
测试2
`);
}
为此:

function showLogin() {
    $('#content').html("<span>test2</span>");
}
函数showLogin(){
$('#content').html(“test2”);
}
一切都很顺利

Android股票浏览器似乎不支持这些报价。我猜这在2.js文件中触发了一个异常,这就是2.js中的其他代码没有执行的原因

我最后对多行字符串使用了反斜杠,如下所示:

$(document).ready(function() {
    $('#content').html("<span>test1</span>");
});
function showLogin() {
    $('#content').html("<span>test2</span>");
}
function showLogin() {
        $('#content').html("<span>\
                            test2\
                            </span>");
}
function showLogin() {
        $('#content').html('<span>\
                            test2\
                            </span>');
}
函数showLogin(){
$('#content').html(“\
测试2\
");
}
反斜杠也适用于单引号,如下所示:

$(document).ready(function() {
    $('#content').html("<span>test1</span>");
});
function showLogin() {
    $('#content').html("<span>test2</span>");
}
function showLogin() {
        $('#content').html("<span>\
                            test2\
                            </span>");
}
function showLogin() {
        $('#content').html('<span>\
                            test2\
                            </span>');
}
函数showLogin(){
$('#content').html('\
测试2\
');
}

我认为它可以帮助您:内容中添加的
test3
是否正确?加载页面时,
#content
的可见值是多少?@maxime_039加载页面时,#content div为空。然后我用一个HTML登录表单填充它。你不能。默认android浏览器应该被烧掉。其他建议:(1)将两个代码文件的
行移动到
正文部分的底部,并从代码中删除
$(文档)。准备好了吗?(2)清除浏览器缓存,然后再次测试。我尝试并删除了
$('#content').html(“test1”),但仍然不起作用。为什么要用两个大括号卷曲和圆括号关闭
showLogin()
函数?是个错误,我真的很累。尽管如此,OP的第二次尝试是错误的。你不能将函数放入iside document.ready@Tadej我要更正示例,请再试一次。正如我所说,如果@Tadej费心查看stacktrace,他本来就不需要问这个问题。同意@StephanBijzitterIt,这是一个拼写错误,但即使有了此修复,它仍然不起作用。我将签出Grunt和Gulp.js。因为我们有太多的文件,无法每次手动合并它们。看起来很有希望。谢谢,当然!这是在旧浏览器中无法运行的ES6语法。据我所知,你没有在问题中包含此代码。我的错。对不起。:/我决不会想到这会引起问题。谢谢你的帮助。非常感谢!现在没关系。下一次请包括准确的代码。很高兴事情解决了。@Tadej很高兴事情解决了。但不幸的是,我想这会浪费我们大部分的时间,因为问题还不完全。我想这不是完全浪费时间,你帮了我很多忙才找到问题。谢谢Stackoverflow也需要奖励评论的声誉,现在我可以投票,但你不会因此获得任何声誉。只有答案(