目前,我们使用AJAX加载点击的标签,并将HTML注入页面并使用history.js操纵位置。
然而,存在一个主要缺点:
由于新加载的页面可能具有不同的CSS和JS,因此我们必须将当前脚本、样式和链接元素与AJAX响应文本进行比较(丑陋的regex),并仅添加尚未存在的新元素。通过这样做,加载另一页不会删除/删除/撤消一旦执行的脚本。这可能成为性能问题(而regex对标记本来就是)。
使用一个iframe可以解决这个问题和其他问题:
当您首次单击网站上的链接时,页面内容将被一个iframe替换,该框架只加载该页面。音频播放器位于原始DOM中,即iframe之外。单击iframe内部的链接也可以在历史记录API中捕获和使用。
因此,尽管我从来没有想过我会这么想:我认为在这里使用iframe可能是更好的选择,不是吗?
PS:我的主要问题是我无法控制网站上的不同页面具有不同的脚本,样式确实不是问题。如果只有一个巨大的静态JS和CSS网站范围内,我没有问题。
更新:除了在iOS中外,iframe解决方案运行良好。Iframe非常丑陋。尽管如此,我认为我们将使用iframe解决方案。
link
加载CSS,则也可以卸载CSS,但同样取决于如何加载CSS,请在此处查看:https://dev59.com/z3I-5IYBdhLWcg3w8dYQ - freedomn-m