这是我的解决方案。我调用函数app_getPage(filePath)来加载包含页面内容的文本字符串。然后我使用 JQUERY 来更新 HTML,<div>
如下所示:
// Fetch a page into a var
var pageText = app_getPage('pages/test.html');
// Did it work?
if(pageText)
{
// Yes it did, stick it out there
$('#appTestDiv').html(pageText);
$('#appMainDiv').trigger('create'); // Probably not necessary
}
else
{
// No good so handle the failure here
app_doEndOfWorldPanicRebootAndMeltDown();
}
请注意,在我的示例中,下面的函数引用了 appData.PageTopTag和appData.PageBottomTag,我只在<body>
标签内使用它们,这样我就可以去掉封闭的文档元素。在这种情况下,它们分别包含<!--FooTop-->
和<!--FooBottom-->
。这样我就可以使用我最喜欢的 HTML 编辑器来创建我想要加载的内容,而不必担心它添加到我的页面中的所有垃圾。我还使用appData.Debug来决定我是否处于调试模式以将垃圾发送到控制台。
function app_getPage(filePath)
{
// Get the file name to load
if(appData.Debug) console.log(arguments.callee.name + ":LoadFile:" + filePath);
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET",filePath,false);
xmlhttp.send(null);
// Did we get the file?
if(xmlhttp.status != 0)
{
// Yes, remember it
var fileContent = xmlhttp.responseText;
if(appData.Debug) console.log("LoadFile-Success");
}
else
{
// No, return false
if(appData.Debug) console.log("LoadFile-Failure");
return false;
}
if(appData.Debug) console.log("FileContent-Original:" + fileContent);
// Get the indexes of the head and tails
var indexHead = fileContent.indexOf(appData.PageTopTag);
indexHead = indexHead >= 0 ? indexHead : 0;
var indexTail = fileContent.indexOf(appData.PageBottomTag);
indexTail = indexTail >= 0 ? indexTail : fileContent.length();
// Now strip it
fileContent = fileContent.substr(indexHead,indexTail);
if(appData.Debug) console.log("FileContent-Stripped:" + fileContent);
// Return the data
return fileContent;
}
因此,如果“page/test.html”包含以下内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Title Foo</title>
</head>
<body>
<!--FooTop-->
<div data-role="controlgroup" data-type="horizontal" style="text-align: center" data-mini="true">
<a data-role="button" href="geo:42.374260,-71.120824?z=2">Zoom=2</a>
<a data-role="button" href="geo:42.374260,-71.120824?z=12">Zoom=12</a>
<a data-role="button" href="geo:42.374260,-71.120824?z=23">Zoom=23</a>
</div>
<!--FooBottom-->
</body>
</html>
你会得到<div id="appTestDiv" data-role="content"></div>
:
<div data-role="controlgroup" data-type="horizontal" style="text-align: center" data-mini="true">
<a data-role="button" href="geo:42.374260,-71.120824?z=2">Zoom=2</a>
<a data-role="button" href="geo:42.374260,-71.120824?z=12">Zoom=12</a>
<a data-role="button" href="geo:42.374260,-71.120824?z=23">Zoom=23</a>
</div>
我知道有更紧凑的方法可以做到这一点,你们中的大多数人会讨厌我的格式,但这对我有用,干净且易于阅读。