我该如何解决:HTML template must contain a single root element
How I can solve: HTML template must contain a single root element
我正在尝试将 onsen navigator 与多个“.html”文件一起使用,但无论我尝试了什么,我都会遇到同样的错误
我的场景
- -www
- /脚本
- index.html
- home.html
我想从 index.html 到 home.html
错误:
Uncaught (in promise) Error: [Onsen UI] HTML template must contain a single root element
at Object.Q.throw (onsenui.min.js:2)
at Object.Q.createElement (onsenui.min.js:2)
at onsenui.min.js:2
我的index.html:
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsenui.css">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsen-css-components.min.css">
<script src="https://unpkg.com/onsenui/js/onsenui.min.js"></script>
<script src='scripts/loginScript.js' type='text/javascript'></script>
<link rel="stylesheet" href="style.css">
<title>Tu Psicologa de Cabecera</title>
</head>
<body>
<ons-navigator id="navigator" page="index.html"></ons-navigator>
<ons-template id="index.html">
<ons-page id="index">
<img class="imagenLogo" src="https://i.imgur.com/cq7BbWn.png">
<ons-card class="loginCard">
<ons-input id="userLogin" modifier="underbar" placeholder="Usuario" style="width: 100%; margin-top: 8px; margin-bottom: 8px;" float></ons-input>
<ons-input id="passLogin" modifier="underbar" placeholder="Contraseña" type="password" style="width: 100%; margin-top: 8px; margin-bottom: 8px;" float></ons-input>
<ons-button class="loginButton" onclick="loginNomral()">ENTRAR</ons-button>
<ons-button class="loginFacebookButton">ENTRAR CON FACEBOOK</ons-button>
<label class="labelRegister">REGISTRARME</ilabel>
</ons-card>
</ons-page>
</ons-template>
<script type="text/javascript" src="cordova.js"></script>
</body>
我的home.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsenui.css">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsen-css-components.min.css">
<script src="https://unpkg.com/onsenui/js/onsenui.min.js"></script>
<link rel="stylesheet" href="style.css">
<title></title>
</head>
<body>
<ons-page id="home">
<ons-toolbar>
<div class="left"><ons-back-button>Page 1</ons-back-button></div>
</ons-toolbar>
<p>This is the second page.</p>
</ons-page>
</body>
</html>
还有我的剧本:
function loginNomral(){
const navigator = document.querySelector('#navigator');
navigator.resetToPage('home.html');
ons.notification.alert('test');
}
请帮忙:v
编辑:
这是一个移动应用程序
完整 html 视图:
Image index.html
Image home.html
从您的代码看来,您 </head>
没有空缺 <head>
但主要问题是您不能将 2 个标签作为根标签,这意味着您需要用一个 <html></html>
标签包裹它们
像这样:
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>
我敢打赌您正在创建某种组件...这些组件看起来像这样:
<header>...</header>
<section>...</section>
哪个...有 2 个 'root' 个元素...对吗?
<aside class='component-name'>
<header>...</header>
<section>...</section>
</aside>
这个有1个
Onsen UI 导航器使用指定页面内容的模板,您不需要创建不同的 html 文件来指定不同的页面
document.addEventListener('init', function(event) {
var page = event.target;
if (page.id === 'page1') {
page.querySelector('#push-button').onclick = function() {
document.querySelector('#myNavigator').pushPage('page2.html', {data: {title: 'Page 2'}});
};
} else if (page.id === 'page2') {
page.querySelector('ons-toolbar .center').innerHTML = page.data.title;
}
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsenui.css">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsen-css-components.min.css">
<script src="https://unpkg.com/onsenui/js/onsenui.min.js"></script>
<link rel="stylesheet" href="style.css">
<title>App</title>
</head>
<body>
<ons-navigator swipeable id="myNavigator" page="page1.html"></ons-navigator>
<template id="page1.html">
<ons-page id="page1">
<ons-toolbar>
<div class="center">Page 1</div>
</ons-toolbar>
<p>This is the first page.</p>
<ons-button id="push-button">Push page</ons-button>
</ons-page>
</template>
<template id="page2.html">
<ons-page id="page2">
<ons-toolbar>
<div class="left"><ons-back-button>Page 1</ons-back-button></div>
<div class="center"></div>
</ons-toolbar>
<p>This is the second page.</p>
</ons-page>
</template>
</body>
</html>
解决方案很简单,几个小时后,我删除了所有 html 格式并保留了标签。
来自这里:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsenui.css">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsen-css-components.min.css">
<script src="https://unpkg.com/onsenui/js/onsenui.min.js"></script>
<link rel="stylesheet" href="style.css">
<title></title>
</head>
<body>
<ons-page id="home">
<ons-toolbar>
<div class="left"><ons-back-button>Page 1</ons-back-button></div>
</ons-toolbar>
<p>This is the second page.</p>
</ons-page>
</body>
</html>
对此:
<ons-page id="home">
<ons-card class="loginCard">
<ons-input id="userLogin" modifier="underbar" placeholder="Usuario" style="width: 100%; margin-top: 8px; margin-bottom: 8px;" float></ons-input>
<ons-input id="passLogin" modifier="underbar" placeholder="Contraseña" type="password" style="width: 100%; margin-top: 8px; margin-bottom: 8px;" float></ons-input>
<ons-button class="loginButton" onclick="logintest()">ENTRAR</ons-button>
<ons-button class="loginFacebookButton">ENTRAR CON FACEBOOK</ons-button>
<label class="labelRegister">REGISTRARME</ilabel>
</ons-card>
</ons-page>
我正在尝试将 onsen navigator 与多个“.html”文件一起使用,但无论我尝试了什么,我都会遇到同样的错误
我的场景
- -www
- /脚本
- index.html
- home.html
我想从 index.html 到 home.html
错误:
Uncaught (in promise) Error: [Onsen UI] HTML template must contain a single root element
at Object.Q.throw (onsenui.min.js:2)
at Object.Q.createElement (onsenui.min.js:2)
at onsenui.min.js:2
我的index.html:
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsenui.css">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsen-css-components.min.css">
<script src="https://unpkg.com/onsenui/js/onsenui.min.js"></script>
<script src='scripts/loginScript.js' type='text/javascript'></script>
<link rel="stylesheet" href="style.css">
<title>Tu Psicologa de Cabecera</title>
</head>
<body>
<ons-navigator id="navigator" page="index.html"></ons-navigator>
<ons-template id="index.html">
<ons-page id="index">
<img class="imagenLogo" src="https://i.imgur.com/cq7BbWn.png">
<ons-card class="loginCard">
<ons-input id="userLogin" modifier="underbar" placeholder="Usuario" style="width: 100%; margin-top: 8px; margin-bottom: 8px;" float></ons-input>
<ons-input id="passLogin" modifier="underbar" placeholder="Contraseña" type="password" style="width: 100%; margin-top: 8px; margin-bottom: 8px;" float></ons-input>
<ons-button class="loginButton" onclick="loginNomral()">ENTRAR</ons-button>
<ons-button class="loginFacebookButton">ENTRAR CON FACEBOOK</ons-button>
<label class="labelRegister">REGISTRARME</ilabel>
</ons-card>
</ons-page>
</ons-template>
<script type="text/javascript" src="cordova.js"></script>
</body>
我的home.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsenui.css">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsen-css-components.min.css">
<script src="https://unpkg.com/onsenui/js/onsenui.min.js"></script>
<link rel="stylesheet" href="style.css">
<title></title>
</head>
<body>
<ons-page id="home">
<ons-toolbar>
<div class="left"><ons-back-button>Page 1</ons-back-button></div>
</ons-toolbar>
<p>This is the second page.</p>
</ons-page>
</body>
</html>
还有我的剧本:
function loginNomral(){
const navigator = document.querySelector('#navigator');
navigator.resetToPage('home.html');
ons.notification.alert('test');
}
请帮忙:v 编辑: 这是一个移动应用程序 完整 html 视图: Image index.html Image home.html
从您的代码看来,您 </head>
没有空缺 <head>
但主要问题是您不能将 2 个标签作为根标签,这意味着您需要用一个 <html></html>
标签包裹它们
像这样:
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
</body>
</html>
我敢打赌您正在创建某种组件...这些组件看起来像这样:
<header>...</header>
<section>...</section>
哪个...有 2 个 'root' 个元素...对吗?
<aside class='component-name'>
<header>...</header>
<section>...</section>
</aside>
这个有1个
Onsen UI 导航器使用指定页面内容的模板,您不需要创建不同的 html 文件来指定不同的页面
document.addEventListener('init', function(event) {
var page = event.target;
if (page.id === 'page1') {
page.querySelector('#push-button').onclick = function() {
document.querySelector('#myNavigator').pushPage('page2.html', {data: {title: 'Page 2'}});
};
} else if (page.id === 'page2') {
page.querySelector('ons-toolbar .center').innerHTML = page.data.title;
}
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsenui.css">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsen-css-components.min.css">
<script src="https://unpkg.com/onsenui/js/onsenui.min.js"></script>
<link rel="stylesheet" href="style.css">
<title>App</title>
</head>
<body>
<ons-navigator swipeable id="myNavigator" page="page1.html"></ons-navigator>
<template id="page1.html">
<ons-page id="page1">
<ons-toolbar>
<div class="center">Page 1</div>
</ons-toolbar>
<p>This is the first page.</p>
<ons-button id="push-button">Push page</ons-button>
</ons-page>
</template>
<template id="page2.html">
<ons-page id="page2">
<ons-toolbar>
<div class="left"><ons-back-button>Page 1</ons-back-button></div>
<div class="center"></div>
</ons-toolbar>
<p>This is the second page.</p>
</ons-page>
</template>
</body>
</html>
解决方案很简单,几个小时后,我删除了所有 html 格式并保留了标签。
来自这里:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsenui.css">
<link rel="stylesheet" href="https://unpkg.com/onsenui/css/onsen-css-components.min.css">
<script src="https://unpkg.com/onsenui/js/onsenui.min.js"></script>
<link rel="stylesheet" href="style.css">
<title></title>
</head>
<body>
<ons-page id="home">
<ons-toolbar>
<div class="left"><ons-back-button>Page 1</ons-back-button></div>
</ons-toolbar>
<p>This is the second page.</p>
</ons-page>
</body>
</html>
对此:
<ons-page id="home">
<ons-card class="loginCard">
<ons-input id="userLogin" modifier="underbar" placeholder="Usuario" style="width: 100%; margin-top: 8px; margin-bottom: 8px;" float></ons-input>
<ons-input id="passLogin" modifier="underbar" placeholder="Contraseña" type="password" style="width: 100%; margin-top: 8px; margin-bottom: 8px;" float></ons-input>
<ons-button class="loginButton" onclick="logintest()">ENTRAR</ons-button>
<ons-button class="loginFacebookButton">ENTRAR CON FACEBOOK</ons-button>
<label class="labelRegister">REGISTRARME</ilabel>
</ons-card>
</ons-page>