javascript - 我可以从另一个域上的 iframe 父级访问 javascript

标签 javascript jquery iframe cross-domain

我控制这两个域,并且可以设置任何必要的策略。 iframe 中的域使用几乎相同的库,如果可能的话,我希望将它们从父级中获取。

需要明确的是,我不是在问如何发出跨域请求。我问的是,当父级位于另一个域时,如何从 iframe 的父级获取脚本。

我遇到了一个权限错误(在这里尝试 jQuery,但与我的其他库相同):

if (typeof(jQuery) == "undefined") {
  var iframebody = document.getElementsByTagName("body")[0];
  var jQuery = function (selector) { return parent.jQuery(selector, iframebody); };
  var $ = jQuery;
}
$("<h1>Hello World</h1>").appendTo("body");

如果它们位于同一域中,这将起作用。

我知道这是跨域的,并且出于安全原因被阻止,但考虑到我控制这两个域并且两个域都不安全敏感,我可以根据需要设置任何宽松的策略。

这可以做到吗?

最佳答案

如果您在两个页面中包含来自同一源的js,它将仅加载一次,但可以在两个站点上访问:

//parent/main.html
<script src="jquery.js"></script>
<iframe src="http://other/iframe.html"></iframe>
<script>
  $(document.body).html("wohoo");
</script>

//other/iframe.html
 <script src="http://parent/jquery.js"></script>
<script>
  $(document.body).html("wohoo");
</script>

因此,如果在 iframe 中访问它们,则脚本仅加载一次,并且如果您访问它们中的每一个而不访问另一个,它仍然可以工作。

关于javascript - 我可以从另一个域上的 iframe 父级访问 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44373890/

相关文章:

javascript - 类型电子邮件不支持选择范围

javascript - 不使用 canvas.getActiveObject() 方法更改 Canvas 文本

javascript - 在 Firefox 中将 HTML 插入 iframe 不会从服务器获取图像,但在 Chrome 中却可以。为什么会这样呢?

javascript - 有没有办法检测 JavaScript 下载的开始?

javascript - 云认证入门

javascript - 如何在 Javascript 中将脉冲动画添加到 div 数组中的 div?

javascript - ember.js: 如何基于 assets/vendor-*.js 进行调试

javascript - 如何获得 scrollLeft 的最大值?

Jquery找到最近的匹配元素

javascript - 如何制作按钮/链接以在 &lt;iframe&gt; 而不是页面中显示源代码?