【问题标题】:iframe and JavaScript on different pages不同页面上的 iframe 和 JavaScript
【发布时间】:2015-04-04 09:39:37
【问题描述】:

如果我有一个类似index.php 的页面,然后包含一个 iframe,但 iframe 缺少 index.php 文件中包含的 JavaScript; JavaScript 会激活 iframe 上的 JavaScript 函数还是需要它们在同一页面上?

例子:

索引.php:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="http://example.com/js/jquery.jplayer.min.js"></script>

包含以下两个代码,而 iframe 需要它们但没有在页面上列出。

【问题讨论】:

  • 您必须引用 iframe 加载的页面上的脚本。再解释一下……你需要访问 iframe 加载的页面中的脚本函数吗?
  • @legends 有什么可能的方法可以实现我正在尝试做的事情吗?因为对于我正在处理的任务,除非我能以某种方式使其成为可能,否则它将无法工作
  • 请详细说明您想要做什么。同样重要的是要知道 iframe 是否是同一个域

标签: javascript php jquery html iframe


【解决方案1】:

主页面和iframe的JavaScript环境是分开的,但是如果来自same origin,它们可以互相对话。

这意味着您有两种选择:

  1. 在 HTML 中包含主页和 iframe 的脚本;这是最简单的

  2. 如果它们在同一来源,则主页可以像这样在 iframe 的环境中提供其功能(假设 functionName 是主页中的功能):

    theIframe.contentWindow.functionName = functionName;
    

    这与 iframe 共享 functionName(使其成为 iframe 中的全局函数)。请注意,functionName 仍在主页面的环境中,因此例如,在该函数的代码中,document 将引用主页面的文档,而不是 iframe 的。

【讨论】:

  • 非常感谢兄弟!这对我有很大帮助并解决了我的问题,很高兴看到有人能用尽可能少的语言理解我想说的话。
  • @Lee Yep。我曾经用 jquery 做过这样的事情,IIRC:&lt;iframe onload="if (typeof $ != 'undefined') this.contentWindow.$ = $; if (typeof jQuery != 'undefined') this.contentWindow.jQuery = jQuery; "。这消除了在 iframe 中包含相同 .js 文件的必要性。尽管我敢打赌,在某些极端情况下这可能会失败。 (例如,如果你做了一些非常特定于上下文的事情,或者在 onload 触发之前。)
猜你喜欢
  • 2012-04-12
  • 1970-01-01
  • 2012-04-25
  • 2012-09-18
  • 2010-09-18
  • 2014-11-21
  • 2019-04-08
  • 1970-01-01
  • 2020-09-05
相关资源
最近更新 更多