我正在使用Apache Cordova制作Android应用程序。一切都适用于默认情况下使用Chrome的Android 6.0,问题出在使用默认Android浏览器的Android 4.2.2(三星Galaxy S4 mini)上。
如果我没有弄错的话,应用程序就会启动"在使用cordova编译并安装在Android操作系统上之后的默认Android浏览器中。
在默认的Android浏览器中,页面在加载时为空。但在Chrome中一切正常。
问题出在默认的Android 4.2.2浏览器中。它不适用于诺基亚1520(使用Windows Phone操作系统)的默认浏览器。
的index.html:
$('#content').html("<span>test1</span>");
function showLogin() {
$('#content').html(`<span>
test2
</span>`);
}
1.js:
showLogin()
2.js(此文件中的任何内容均无效,我无法在页面上看到test1或test2):
setTimeout()
我做了什么#1
我还尝试拨打setTimeout(function() {
showLogin();
}, 1000);
内的$(document).ready(function() {
$('#content').html("<span>test3</span>"); // Works fine.
showLogin();
});
:
$(document).ready(function() {
$('#content').html("<span>test1</span>");
function showLogin() {
$('#content').html(`<span>
test2
</span>`);
}
});
我做了什么#2
1.js:
{{1}}
2.js(此文件中没有任何内容可用):
{{1}}
答案 0 :(得分:1)
Android 4.2.2股票浏览器出现问题。并且调试输出不起作用。你想在这个问题上坚持多久?
这是绕过它的一种方法:将文件写入多个文件并合并它们,然后将它们推送到.apk,这样您最终只能得到1个文件。缺点是您可能更难以使用合并文件进行调试。但是,正如你所说,使用Android 6.0它可以工作,所以用它来调试。一些Google-fu显示了以下选项:Grunt和Gulp.js
答案 1 :(得分:1)
问题是由多行JavaScript字符串“`”的引号引起的。
我改变了这个:
function showLogin() {
$('#content').html(`<span>
test2
</span>`);
}
对此:
function showLogin() {
$('#content').html("<span>test2</span>");
}
一切正常。
在Android浏览器中看起来不支持这些引号。我想这会在2.js文件中触发一个异常,这就是2.js中其他代码没有执行的原因。
我最终使用反斜杠作为多行字符串,如下所示:
function showLogin() {
$('#content').html("<span>\
test2\
</span>");
}
反斜杠也适用于单引号,如下所示:
function showLogin() {
$('#content').html('<span>\
test2\
</span>');
}
答案 2 :(得分:0)
试试这个,你可以在1.JS的设备上或你的事件触发的电话上动态加载脚本:
{{1}}
答案 3 :(得分:-1)
问题出在2.js文件
$('#content').html("<span>test1</span>");
function showLogin() {
$('#content').html("<span>test2</span>");
});
在最后一行你使用了小支架来制动功能,所以它是未定义的。在花括号后移除小支架。 工作示例See here
答案 4 :(得分:-1)
尝试在</body>
代码之前包含所有脚本。
<强> HTML 强>
<!DOCTYPE html>
<html>
<head>...</head>
<body>
<div id="content">
</div>
<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>
</body>
</html>
2.js 应包括
function showLogin() {
$('#content').html("<span>test2</span>");
}
$(document).ready(function() {
$('#content').html("<span>test1</span>");
});
1.js 应该包括
$(document).ready(function() {
$('#content').html("<span>test3</span>"); // Works fine.
showLogin();
});
另一种方法
<强> HTML 强>
<!DOCTYPE html>
<html>
<head>...</head>
<body>
<div id="content">
</div>
<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>
<script type="text/javascript">
$(document).ready(function() {
showTest1();
showTest3();
});
</script>
</body>
</html>
2.js 应包括
function showLogin() {
$('#content').html("<span>test2</span>");
}
function showTest1() {
$('#content').html("<span>test1</span>");
}
1.js应该包括
function showTest3() {
$('#content').html("<span>test3</span>"); // Works fine.
showLogin();
}
答案 5 :(得分:-3)
也许我错了,但我认为&#34; $(&#39; #content&#39;)。html(&#34; test1&#34;);&#34;它的激动2.js和showLogin从未被称为。
我会尝试这样的事情:
$(document).ready(function() {
$('#content').html("<span>test1</span>");
});
function showLogin() {
$('#content').html("<span>test2</span>");
}
或者至少单独使用showlogin函数来尝试它。
希望有所帮助