我有一个带有href按钮的index.html到另一个页面以显示饼图,但是当我点击按钮时图表没有出现,那么如果我刷新页面,则会出现图表。 这是html页面。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>the Stats</title>
<link rel="stylesheet" href="jquery.mobile-1.3.1.css" />
<link rel="stylesheet" href="demo.css">
<script src="jquery.js"></script>
<script src="jquery.mobile-1.3.1.js"></script>
</head>
<body>
<div data-role="page">
<div data-role="header" data-theme="b" >
<h1>HsV</h1>
</div><!-- /header -->
<div data-role="content">
<img id='img' src="HSV-logo.png" width=150 />
</div> <!--/content -->
<div class="content-primary">
<ul data-role="listview">
<li><a href="France-10.html" data-inline="true" data- transition="flip"><img src="images/gf.png" alt="France" class="ui-li-icon">France </a></li>
<li><a href="France-30.html" blank" data-inline="true" data-transition="flip"><img src="images/gb.png" alt="Great Britain" class="ui-li-icon">Great Britain </a></li>
<li><a href="chart/raphael_BL.html" data-inline="true" data-transition="flip"><img src="images/gbl.png" alt="Belgium" class="ui-li-icon">Belgium </a></li> </ul>
</div>
<div id="footer" data-role="footer" data-theme="b">
<h1>my app</h1>
</div>
</div><!-- /page -->
</body>
</html>
这是饼图链接页面的代码。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>HybridStatsViewer</title>
<link rel="stylesheet" href="jquery.mobile-1.3.1.css" />
<link rel="stylesheet" href="demo.css">
<!--link rel="stylesheet" href="demo-print.css"media="print"-->
<script src="jquery.js"></script>
<script src="jquery.mobile-1.3.1.js"></script>
<script src="raphael.js"></script>
<script src="pie-10.js"></script>
<script src="moteur.js"></script>
</head>
<body onload="moteur();">
<div data-role="page">
<div data-role="header" data-theme="b" >
<h1>HsV</h1>
<a href="index.html" data-role="button" data-icon="arrow-r" data-theme="c" data-inline="true" data-transition="flip" data-direction="reverse">Back</a>
</div><!-- /header -->
<div id ="holder">
</div>
<a id="bt" href="France-30.html" data-mini="true" data-role="button" data-inline="true" data-transition="flow" data-theme="b">Slide</a>
<div id="footer" data-role="footer" data-theme="b">
<h1>my app</h1>
</div>
</div><!-- /page -->
</body>
答案 0 :(得分:2)
你没有发布你的javascript代码,但我想我知道你的问题是什么。
所有使用页面高度和宽度(在您的情况下为饼图)的jQuery插件必须通过 pageshow 事件进行初始化。这是因为jQuery Mobile页面仅在此时具有正确的高度。因此,如果页面高度为0,则插件将初始化,但高度设置为0。
因此,如果您在准备文档或任何其他页面事件期间执行此操作,请将饼图插件初始化切换为 pageshow evenet。
如果你不知道什么是网页剧情节,请查看我的其他详细答案: jQuery Mobile: document ready vs page events
编辑:
我已经解决了你的问题。
要了解这种情况,您需要了解jQuery Mobile的工作原理。它使用ajax加载其他页面。
第一页正常加载。它的HEAD和BODY被加载到DOM中,它们在那里等待其他内容。加载第二页时,只将其BODY内容加载到DOM中。
在我的其他答案中了解更多相关答案: Why I have to put all the script to index.html in jquery mobile
答案 1 :(得分:1)
在饼图页面中添加以下代码并删除onload="moteur();"
功能。
<script>
$(document).on('pageshow', '[data-role=page]', function () {
moteur();
});
</script>
答案 2 :(得分:0)
当通过Ajax加载页面时,引用页面头部的任何脚本和样式都不会产生任何影响,但如果通过HTTP正常请求页面,它们将执行。编写jQuery Mobile站点时,需要考虑这两种情况。在通过Ajax请求时忽略页面头部的原因是重新执行相同JavaScript的可能性非常高(在站点的每个页面中引用相同的脚本是很常见的)。由于尝试解决该问题的复杂性,我们将执行特定于页面的脚本的任务留给开发人员,并假设只有每个浏览会话执行一次头脚本。
构建jQuery Mobile站点时最简单的方法是在每个页面的头部引用同一组样式表和脚本。如果您需要加载特定页面的特定脚本或样式,我们建议将逻辑绑定到pageinit事件(详细信息如下),以便在创建特定页面时运行必要的代码(可以通过其id属性或数字来确定)其他方式)。如果页面直接加载或通过Ajax拉入并显示,则遵循此方法将确保代码执行。
页面特定脚本的另一种方法是在未定义data-role = page元素时,或在第一个data-role = page元素内包含body元素末尾的脚本。如果以这种方式包含自定义脚本,请注意这些脚本将在通过Ajax或常规HTTP加载该页面时执行,因此如果这些脚本在每个页面上都相同,则可能会遇到问题。如果您以这种方式包含脚本,我们建议您将页面内容封装在data-role =“page”元素中,并放置在该元素之外的每个页面上引用的脚本。该页面独有的脚本可以放在该元素中,以确保它们在通过Ajax获取页面时执行。
查看我们的链接以获取完整的详细信息.....
http://demos.jquerymobile.com/1.2.0-beta.1/docs/pages/page-scripting.html