我有一个 Web 应用程序,它由一个index.html包含<iframe>. 该index.html文件在<iframe>. 这些页面中的每一个都有自己独立的 Javascript 和 CSS。
到目前为止一切正常。
我现在正在考虑使用 Ajax 调用将这些页面加载到<div>index.html 中的 a 中,而不是将它们加载到<iframe>. 我已经做了一些测试,这是可能的,但有一个问题让我担心,因为我是这项技术的新手,我想也许这里的一些专家可以分享知识。
问题 #1:
将这些页面直接加载到文件<div>中的 a 时index.html,新页面将加载到与其自身相同的 DOM 中index.html。因此,元素类和页面 ID 之间可能存在冲突index.html,例如$("#foo").hide();从页面托管实际上会隐藏文件和页面中具有类的foo元素index.html。有什么办法,我可以将页面代码放在某种沙箱中以防止它影响index.html?
问题 #2:
当移除一个页面(可能用另一个页面替换它)时,它的代码的一部分仍然会留在内存中(如这里提到的)。有什么办法可以防止这种影响吗?当然,对第一个问题的肯定回答将涵盖这个问题,因为如果页面在沙箱中运行,卸载页面也应该卸载其 javascript 代码。
问题 #3:
该页面是一个完整的 HTML 文件,具有自己的<head>,<body>和<title>元素。这意味着它也会受到托管index.html文件中的 CCS 规则的影响。我怎样才能防止这些负面影响?
无需重新加载整个页面的分页导航系统似乎是许多现代网站的常见交互机制。如何在没有这些副作用(没有<iframe>)的情况下动态加载页面?