我目前正在开发一个原型,用于在开发 Win8.1 WinJS 应用程序时测试几个框架的可用性。在开发过程中,我发现了一种非常奇怪的表单行为。
这是一个新创建的 WinJS 应用程序的原版形式:
您可以看到输入框中的光标和复制按钮的一半。由于插入式虚拟键盘会覆盖输入框,因此它会自动向上滚动内容。
现在我包括 AngularJS 1.3.1:
现在,没有光标,没有出现复制按钮,并且插入式键盘实际上覆盖了输入框。实际上无法更改不可见光标的位置,因此我只能将字符添加到任何现有文本中。
我分析了两个版本的 DOM 树:
香草:
Angular 1.3.1 包括:
我们可以看到,angular 在头部内嵌套了一个二级头部,包括一些奇怪的 ass css 定义。此外,在 head 元素中创建了另一个 body 标签。我尝试在使用以下代码段加载 Angular 后删除它们:
<script type="text/javascript">
$(function () {
$('head > head, head > body').remove();
});
</script>
这解决了问题,但现在,ng-show、ng-hide 指令不再起作用。只有在 WinJS API 中使用 AngularJS 时,我才能观察到这个问题。我搜索了互联网,但没有找到任何关于这种行为的线索——实际上有几个博客描述了在 WinJS 应用程序中使用 AngularJS 的过程,但没有提及任何此类问题。
你们知道这里发生了什么吗?