解决方案
这不是真正的问题。问题是其中一个javascript没有加载。
我在这里问了一个关于它的新问题:Can't call functions from first included javascript file from the second included js file
我原来的问题
当我在浏览器中查看我的应用程序时(在使用Cordova构建/编译它之前),一切正常。但是在用Cordova构建它之后,$("#content").html("test");
在android 4.2.2上不再起作用了。但是,它确实适用于Android 6.0.0。 alert("test");
。
首先我认为jQuery不起作用......但后来我尝试了这个:
$("body").click(function() {
alert("test");
});
并且有效。
为什么.html()
方法不起作用的任何想法?
更新
这是具有id" content"的元素的方式。看起来像:
<div id="content">
</div>
我尝试添加这样的内容:
$('#content').html(`<span>test1</span>`);
在所有Android版本中,我使用谷歌浏览器作为我的浏览器。
更新#2
我在
内外尝试了html()
方法
$(document).ready(function(){});
答案 0 :(得分:3)
开始于:
在您设置文字之前,请务必将<div id="content">
加载到DOM。脚本执行,可以利用onload()
来确保。可能检查了这一点,但是为其他人做准备。
接下来,我想知道问题是否与JQuery的.html()
方法有关。文档说明&#34;此方法使用浏览器的innerHTML属性。&#34;
单独检查innerHTML()
:
document.getElementById("content").innerHTML = "test";
我知道在vanilla JS中使用innerHTML()
时有一些限制,例如<script>
的问题,所以如果JQuery&#39;} .html()
使用它,可能会出现问题不知。
如果可以,请尝试使用vanilla JS通过以下方式设置#content
<div>
:
document.getElementById("content").textContent = "test";
这样您就可以取消.html()
,并且.innerHTML()
无法使用.html()
。
编辑:这是JQuery的innerHTML()
方法,真正的问题可能在于它如何处理设置。它尝试使用append()
,如果以某种方式失败,则默认为function (value) {
return access(this, function (value) {
var elem = this[0] || {},
i = 0,
l = this.length;
if (value === undefined && elem.nodeType === 1) {
return elem.innerHTML;
}
// See if we can take a shortcut and just use innerHTML
if (typeof value === "string" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()]) {
value = value.replace(rxhtmlTag, "<$1></$2>");
try {
for (; i < l; i++) {
elem = this[i] || {};
// Remove element nodes and prevent memory leaks
if (elem.nodeType === 1) {
jQuery.cleanData(getAll(elem, false));
elem.innerHTML = value;
}
}
elem = 0;
// If using innerHTML throws an exception, use the fallback method
} catch(e) {}
}
if (elem) {
this.empty().append(value);
}
},
null, value, arguments.length);
}
。
见下文:
append()
此外,如果innerHTML()
方法中的html()
失败,则以下是名为function () {
return this.domManip(arguments, function (elem) {
if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
var target = manipulationTarget(this, elem);
target.appendChild(elem);
}
});
}
的后备默认值的来源:
html:
您可以通过Ctrl + F搜索JQuery中的方法,并在查看源代码时进行搜索...例如action.places
,使用冒号。见下图:
注意底部的搜索栏。
答案 1 :(得分:0)
我认为.html()无效的原因是因为它可能没有绑定到action /元素,而alert()本身就是一个消息框或向用户传达信息的方式。 让我们看看使用示例:
警报():
$("body").click(function() {
alert("test");
});
HTML():
$("body").click(function(){
$("h1").html("test");
});
在这里,你可以清楚地看到,按钮触发了一个点击动作,然后改变了“h1”的内容,但警告并不需要任何这样的招标到一个元素左右.......
希望这有用:)