我使用 Visual Studio 2013(社区)使用 Cordova 4.3.0 创建应用程序。我的目标是 WP8.1(模拟器的“Windows Phone(通用)”设置)。
我从 VS2013 的模板“Blank App (Apache Cordova)”创建了一个应用程序。然后,我添加了一个简单的代码,用于在监听事件时
修改 DOM 。document.innerHTML
deviceready
var elt = document.getElementById('test');
elt.innerHTML = '<p>add a P in the DIV</p>';
在更新之前我有:
<div id="test"></div>
在 javascript 完成这项工作之后:
<div id="test">
<head></head>
<body>
<p>add a P in the DIV</p>
</body>
</div>
就像被<p>
包裹着<body>
一样<div>
<html>
如果我使用 Windows Phone 8(不是 8.1)模拟器(或设备),这不会发生。
我需要动态注入 DOM 元素,但这个 bug 是不可能的。使用append()
or prepend()
jquery方法有同样的错误。
我该如何解决?
编辑: 如果我使用节点操作,结果是正确的。
var para = document.createElement("p");
var node = document.createTextNode("add a P in the DIV");
para.appendChild(node);
var element = document.getElementById("test");
element.appendChild(para);
但是创建一个更复杂的 HTML 结构,它很快就会变得非常冗长。
不知道 ?
我找到了另一个更漂亮的解决方案。
var elt = document.getElementById('test');
elt.innerHTML = ''; // remove content works without head/body insertion
elt.insertAdjacentHTML('beforeend', '<p>add a P in the DIV</p>');