我目前正在研究jQuery mobile及其使用XmlHttpRequest加载网页的系统。因此,例如,可以在两个页面之间自动执行过渡动画。
然而,我不清楚某些事情。如果我理解正确的话,jQuery移动网站的每个新页面都会被注入初始网页的DOM中。 jQuery mobile的文档甚至告诉我,由于这种机制,新网页的<title>
标记不会被考虑在内。
所以,在某种程度上,如果我的初始网页A.html加载页面B.html,我倾向于认为网页B.html不需要具有<html>
的完整HTML语法,<head>
或<body>
标记。
我的页面B.html可以直接以<div>
元素开头。
我是对的吗?用jQuery mobile加载HTML页面时是否需要一个完整的html页面?
有一个错误/截断HTML语法的网页有什么优缺点(appart that不应该直接访问此页面,而是通过主页面访问?
答案 0 :(得分:2)
使用jQuery mobile时,你应该“使用”整页,但它当然可以使用很长时间,然后将所有内容加载到DOM中需要很长时间。很多开发人员都不喜欢这个。
回答你的问题:只要你有一个有效的html页面(你的jquery移动应用程序的主页面),它就可以加载一个“错误/ trumcated”的html文件就好了。它也可以加载一个正确形成的html文件。你可以选择看起来更干净的东西。
这是一个类似的q&amp; a,它有助于支持我的观点:jQuery mobile multiple HTML files
警告:如果这是针对可在线使用的网站,并且如果您采用具有多个(和碎片)页面的方法,您可能想要停下来思考SEO ..您可能需要一个漫游器文件来阻止Google机器人抓取其他页面。如果您在整个网站上都关注SEO,那么您应该查看Google在Responsive web design for mobile上撰写的这篇文章。它可以从一开始就改变你的整体观点。
我的意见是你应该在一个页面上拥有你的jQuery Mobile网站。您可以随时使用JavaScript / jQuery根据需要注入额外的标记。这是我为jQuery Mobile网站采取的方法。另一方面,如果你将它包装在PhoneGap中以部署为本机移动应用程序,那么我会使用碎片页面,因为,a)SEO不适用于它,和b)我希望DOM加载速度快尽可能使它看起来像一个“真正的本机应用程序”加载。我相信碎片页面可以帮助它加载更快,我知道在你需要的时候用JavaScript / jQuery注入代码会使它加载更快。
答案 1 :(得分:1)
但是当用户在A.html
开始,然后转到B.html
,然后刷新页面时会发生什么? jQuery Mobile使用pushState
插件更新URL,就像用户正常访问B.html
页面一样。这意味着,如果用户在B.html
上刷新,则如果不是完整文档,则不会有适当的包含来创建您的移动网站。
我的建议是在每个文档中包含jQuery Mobile JS / CSS文件,在每个文档中包含jQuery Core JS文件,并包含外部自定义JS / CSS文件,其中包含您站点所需的所有JS和CSS 。这样,无论用户访问的站点中的哪个页面,它都将包含所有必要的信息。这不会给您的网站带来大量的膨胀,每页只包含几行内容。大多数时候,当jQuery Mobile通过AJAX将页面拉入DOM时,所有这些包含都会被忽略(jQuery Mobile只抓取第一个data-role="page"
元素及其内容,忽略文档中的其他所有内容。/ p>
长话短说:
为每个文档省略正确的HTML结构的性能优势不值得破坏用户对常见事件的体验,例如刷新页面(当用户将浏览器打开到已打开的页面时,会在许多设备上自动发生)
不使用有效的HTML结构的主要 con 是您正在损害您的SEO。文档<head>
中的元标记对于页面中的内容应该仍然是唯一的,这样搜索引擎抓取工具就可以正确地为您的网站编制索引。
答案 2 :(得分:0)
如果您尝试加载外部html文件,最好有一个完整形成的html页面。那个html页面也应该有<div data-role="page">
标签。我认为jquery mobile会查找该标签并根据它加载新页面。
您还可以将所有页面的html包含在一个页面中,并标注为“A.html”。每个页面的HTML应以<div data-role="page">