【问题标题】:How to block a specific line of code from an iFrame?如何阻止 iFrame 中的特定代码行?
【发布时间】:2017-12-07 00:39:52
【问题描述】:
有没有办法阻止特定代码行在第三方网站中执行,出现在 iFrame 中?
我有一个嵌入式小部件,它在 iFrame 中加载 JQuery。我不需要额外的网络请求,因为我的站点已经在加载 JQuery。
如果我只能阻止一行代码(在本例中为第 77 行),那么我可以阻止再次加载 JQuery。
我想这个动作会在 iFrame 被渲染之前发生。
【问题讨论】:
标签:
javascript
jquery
html
iframe
【解决方案1】:
same-origin policy 可防止您触摸第三方网站的 iframe 的任何部分,因此您无法直接采取任何措施来阻止发送该请求。即使可以,iframe 和您的网站也没有共享状态,因此其他网站很可能会中断,因为它无法访问您的 jQuery 实例。想想如果您在新标签页中加载了第三方网站但阻止了请求会发生什么。
但是,您可以采取一些措施来确保浏览器使用库的缓存副本,该副本实际上不会在任何地方发送请求:
- 如果从 CDN 加载外部库,则很有可能其他网站请求了相同的 URL,因此用户的浏览器有它的缓存副本。
- 由于您自己使用jQuery,您可以使用其他网站的相同版本的jQuery。这样一来,用户的浏览器将从 CDN 获得该文件的缓存副本,并且不会发出第二次请求。
否则,如果网站使用的是您自己无法使用的旧版本 jQuery,或者如果它是在没有 CDN 的情况下自托管,则您无能为力。