如何将通过ajax或jquery.load加载的所有javascript放在非全局子作用域中

How to put all of the javascript loaded through ajax or jquery.load in a non-global child scope

本文关键字:javascript 全局 作用域 ajax 加载 load jquery      更新时间:2023-09-26

我正试图通过使用ajax/jquery.load()绕过iframe,并在我的网站上注入第三方页面(CORS要求在这里不是问题,因为第三方设置了适当的CORS响应标头)。

所以我的问题是:假设主主站点加载jquery1.x和其他一些库。假设第三方页面加载jquery2.x和其他一些与主站点冲突的库。

如何在第三方页面上重构我的JS,使其不加载在JS全局范围内,而是加载在屏蔽的子范围内。

我可以用函数(){}包装所有内容吗??包括jquery库等?如果是,我如何在第三方页面上访问此子作用域中的方法/var?

如果我需要提供更多细节,请告诉我。。。

iframes默认情况下自己加载整个document,并且几乎屏蔽了所有内容,您可以允许使用沙箱属性的modals/popup/etc,如果没有指定,它将只显示内容,并且不会与上层交互。

要访问iframe内部的功能,您可以:

document.getElementById("resultFrame").contentWindow.Reset()

这将在具有resultFrame ID的iframe内运行Reset()全局函数。