【问题标题】:Working with iframes with the moovweb sdk使用 moovweb sdk 处理 iframe
【发布时间】:2013-07-10 23:28:38
【问题描述】:

我使用 moovweb sdk 创建了一个项目,但无法在其中一个页面的 iframe 中编辑内容。例如,在 iframe 内移动一个 div 似乎不适用于我正在编写的氚。我可以用氚做什么来完成这项工作?域是不同的仅供参考。

【问题讨论】:

    标签: iframe moovweb tritium


    【解决方案1】:

    不幸的是,Tritium 只允许您编辑 iframe 本身的属性,而不是其中的内容。

    这是因为对 iframe 中内容的请求是在浏览器构建主页面的 DOM 之后进行的。 Tritium 只能拦截对主页的第一个请求,而不能拦截对来自不同域的内容的第二个请求。

    我知道两种解决方法:

    1. 将第二个网站添加为 Moovweb 项目,您将能够使用 Tritium 来操作内容。然后您可以将原始页面的 iframe 指向这个新内容。
    2. 使用 JavaScript/AJAX 修改 iframe 的内容。

    但是对生产域有影响...恐怕我可能已经匆忙回答这个问题,并会在我做更多研究后更新它。

    【讨论】:

    • 值得注意的是,如果域相同,那么您可以使用 Tritium。同样值得澄清的是,这是网络固有的问题,而不是氚缺陷。顺便说一句,我认为选项 2(使用 JavaScript 修改框架内容)不会起作用,因为同源策略会阻止 JS 影响 iframe 的 DOM。
    【解决方案2】:

    如果 iframe 位于同一来源 (http://m.yoursite.com) 或在您的 config.json 中的来源上,您绝对可以使用氚!然而,也许不是你想象的那样!

    因此,iFrame 将向src 属性的位置发出单独 请求。如果您确保此请求通过 SDK(通过重写),如下所示:

    $(".//iframe[@src]") {
      attribute("src") {
        rewrite("link")
      }
    }
    

    然后您可以映射该 url 并在其上执行常规氚!

    【讨论】:

      【解决方案3】:

      你需要分析iframe的src,需要在mappings.ts中为src中的url写映射。在 pages 文件夹中包含正确的 .ts 文件并开始转换它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-18
        • 1970-01-01
        • 2021-12-30
        • 1970-01-01
        • 2011-02-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多