【问题标题】:use same script like jquery or plugins from iframe loaded in parent使用相同的脚本,如 jquery 或来自父级的 iframe 中的插件
【发布时间】:2014-07-22 15:25:41
【问题描述】:

如何访问我在 iframe 的父级中加载的 jquery 脚本。 我尝试使用 $= parent.$ 但随后它访问父级的 Dom 而不是 iframe 有没有大神指导一下?

【问题讨论】:

  • 不能,因为 iFrame 是不同的文档。
  • 我将 document.domain 设置为与父级相同。
  • 当您可以在 iframe 中插入指向 jquery 的脚本链接时,为什么还要花时间尝试做不可能的事情?
  • 我目前也在做同样的事情,但由于我有很多 iframe,它似乎使用了大量的浏览器内存(IE 8)

标签: javascript jquery iframe


【解决方案1】:

我假设您要访问父文档脚本中的函数。 如果两个文档都位于同一主机内,则可以做到这一点。 我在脚本中使用它,这是 iframe 的文件。

parent.FunctionName();

如果您想访问父文档中某个字段的值,您可以使用:

Value1 = $("#FieldNameHere", parent.document.body);

【讨论】:

  • 是的,我想访问这些函数,但目标也是避免在不同的 iframe 中出现多个脚本,例如 jquery。我知道如果 url 相同,则脚本会从缓存中加载,但即便如此,它也会结束占用浏览器内存。
  • 那么然后将所有脚本保留在父页面中,并使用上面的示例引用 iframe 中的函数。
【解决方案2】:

我找到了一种方法可以做到这一点。首先,您必须定义一个可以包含 javascript 文件的函数

    function loadScript(url)
    {
        var script = document.createElement("script")
        script.type = "text/javascript";
        script.src = url;
        document.getElementsByTagName("head")[0].appendChild(script);
    }

现在,您必须获取 iframe 父级中包含的所有脚本并调用 loadScript 函数,就像这样

    var scripts = parent.document.getElementsByTagName("script");
    for (i=0;i<scripts.length;i++)
        if(scripts[i].src!="")
            loadScript(scripts[i].src);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多