- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为我们开发了一段代码,基本(和简化的)设计如下:
着陆页有两个部分,第 1 部分的示例如下
这相当简单:点击链接 1-1 到 1-N,它会将您带到该页面,例如http://testpage.com/link1-1
现在,在第 2 部分中,事情的工作原理类似,如下所示:
不同之处在于,第 2 部分中路由到页面的任何链接都包含信息(对于此问题并不重要)和 iFrame。此 iFrame 根据单击的链接加载第 1 部分中的链接。
我的第一个问题是 iFrame 的使用。这里发生了很多事情:它重新加载整个站点(这意味着从头开始引导一切)。有些信息是硬连线的,不会使用 if 语句重新加载,该语句检查网站现在是否正在 iFrame 中加载。这一切对我来说都感觉有点肮脏。有些命令从 iFrame 交叉通信到父窗口,有些则不然。追踪一切是不可能的。
iFrame 没有中间点。主应用程序的路由检查它是否在 iFrame 中,并从那里随机路由到第 1 部分的链接 1-N 之一。这意味着 iFrame 总是加载大量数据,即使用户没有选择它。
我向他们提到了以下问题:
他们说他们这样做的原因:
我非常不同意前两个说法,因为 iFrame 加载新版本的 CSS,并且可以重用代码,而无需使用 iFrame。我对第三个有点一无所知。
现在回答我的问题。这是唯一的方法吗?该系统在 Backbone.js 上运行,我几乎完全相信这可以以更干净、更有效的方式完成。如果将链接注入(inject)到 div 而不是 iFrame 中,清除将要加载的所有资源有多困难?
最佳答案
嗯,我们拥有 mv* 框架的主要原因之一是代码的可重用性。
我们有 View 组件,以便我们可以轻松实例化并将其注入(inject)到您想要的任何地方。将整个应用程序加载到<iframe>
中在特定路线上显示特定 View 没有意义,并且失去了单页应用程序的意义。它们的主要优点之一是浏览器不必创建全新的文档并一遍又一遍地加载(和处理 - 编译脚本、计算绘图的 CSS 样式等)相同的资源。
可能有效,具体取决于 CSS 的编写方式。例如,当在 testpage.com:link
中自由加载时,该 View 可能直接位于带有 container
的 div 下类,但是当加载到第二部分的小盒子中时,它可能会嵌套在其中深处(或者最坏的情况,它甚至可能不存在)。
像 .container > .linkView
这样的 CSS 选择器第二种情况不起作用,需要修改为.container .linkView
可能需要的 CSS 更改完全取决于 DOM 结构、复杂性及其当前的编写方式。
他们的这一点实际上是反对他们的,因为他们创建的 View 组件不能在应用程序的其他任何地方重新使用,这就是为什么他们必须将其加载到 <iframe>
中。作为一个完全不同的应用程序实例
在 <iframe>
中加载整个应用程序不是代码重用,而是创建应用程序的另一个实例,那里没有任何东西被重用。在应用程序的不同位置重用相同的 View ,只需最少的 CSS 更改(如果需要)就是实际的代码重用。
跟踪脚本和 Assets ..?为什么我们需要跟踪脚本和 Assets ?这不像我们一般从代码中手动卸载脚本和资源。浏览器不处理这些东西吗?
如果用户碰巧访问link 1-1
在第 1 部分中,当我们访问第 2 部分中的相同内容时,在单页应用程序中,我们的优势是所需的资源已在浏览器中加载(并处理),并且如果不让浏览器加载所需的额外资源。它比浏览器加载和编译来自下划线和 jquery 的所有内容要好得多 <iframe>
我认为文档。
关于内存管理 - 导航到不同路线时删除 View 应该会释放内存,除非代码有问题。 - 换句话说,代码中存在内存泄漏。在这种情况下采取的正确措施是修复泄漏。
<小时/>关于你的第一点:
这取决于谁在管理代码,如果是那些提出 <iframe>
的人,也许他们更容易管理:D
我完全同意另外两点。
关于javascript - 在 iFrame 中重新加载同一站点的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35875780/
所以我知道,如果我将 iFrame 包含到不在同一域中的页面,我将无法通过浏览器策略访问该 iframe 的 DOM,但是 iframe 中的页面可以执行任何类型的父文档访问吗? 具体来说,我必须考虑
我有 3 个嵌套的 iframe,我想访问第三个 iframe 中的元素(链接)。 var iframe = document.getElementById('aswift_2'); var inne
Chrome 有最简单的方法,只需从下拉列表中选择一个框架即可。 Firefox 提供了 cd(frame)功能不太好用,但只要您愿意发现哪个框架是哪个框架就可以完成工作。 但是我们如何在 Inter
我们公司正在考虑允许第三方网站使用我们的在线结账系统。 一位客户表示,他们希望能够使用灯箱样式的弹出窗口来显示结帐。他们希望在网站的每个页面上都可以使用它,因此大多是不安全的页面。我们的结帐系统和客户
当 iframe 中加载的页面来自另一个域时,我们如何从 iframe 中加载的文档访问父文档? 我收到权限被拒绝错误。 最佳答案 如果您可以控制这两个文档,那么您可以轻松地使用 easyXDM (
使用 SOAP 调用我得到一个 URL 并在 iframe 中显示。那个 URL 内容是一个表单,用户需要填写所有数据并提交它。当我调用 SOAP 函数时,也给出了一个返回链接,其中一个重定向到我的站
我正在尝试开发一个小型 Web 应用程序,其中包含一个使用来自另一个域的 iframe 的 Web 应用程序。我正在尝试在本地计算机上对此进行测试,为此我需要模仿 iframe 来自另一个域(虽然它实
我有一个网页 指向另一个网站。我不希望这阻止页面其余部分的加载。有没有办法异步加载它? 最佳答案 使用 jQuery,可以实现以下效果: $(window).load(function() {
我搜索过高低,无法找到解决方案。在我看来,iframe API仅适用于较旧样式的网址,而不适用于较新的海关网址。 我的意思是,如果某人的YouTube网址为www.youtube.com/user/T
我想在我的网站上显示youtube视频。 iframe是可能的,我只需要像这样将其放在我的网页上。 一切都很好,除了我超过99%的客户来自伊朗,而且YouTube在伊朗被政府封锁。因此,直接从you
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
所以我有一个简单的页面,当用户单击链接时,iframe 将打开。我正在尝试使用 http://www.google.com/support/analytics/bin/answer.py?hl=en&
假设情况:我有一个名为“miniatureBoltsInCarburetors.com”的不起眼的小网站,该网站提供有关将化油器固定在一起的微型 bolt 的内容以及一些一般相关的汽车信息。我的网站还
IE 6.0 向我显示消息“此页面包含安全和非安全项目”,因为我的页面上有 iframe(针对组合框错误)。我尝试指向 src 中的一些不同的内容,但如果不放入空白的 html 页面,我似乎无法摆脱此
我有一个带有一个 iframe 和一个按钮的网页。 在页面加载事件中, if (!Page.IsPostBack) { string sDocUrl = //some doucmen url Ifra
我有一个带有一些 IFrame 的页面。这些 IFrame 位于同一域中。我想在打开模态窗口时从页面中删除 iframe 内容,以减少模态窗口中的延迟。 然后,当我关闭模态窗口时,我希望将 IFram
我正在尝试访问一个框架内的控件,该框架位于另一个框架内的框架内。 最后(最深的)框架仅用于登录 - 我设法做到了。 问题是登录后我基本上需要回到上框点击一个按钮。出于某种原因,我不断收到错误消息: N
我有下一个元素结构: .. actual markup with scripts here 使用纯 javascript,我已经摆脱
我们使用 Worldpay 作为我们的支付提供商,我们将 PayPal 作为 worldpay 的一部分实现,这意味着我们只与 Worldpay 集成,他们处理 PayPal 集成。 虽然这会带来很多
我有一个客户,由于特定原因,需要在 HTTP 页面上放置一个指向 HTTPS 页面的 IFRAME。 HTTP 页面托管在与 HTTPS 页面不同的域和服务器上,但都属于同一客户端。 撇开为什么不应该
我是一名优秀的程序员,十分优秀!