删除iframe并防止与库发生冲突

时间:2016-07-28 10:49:33

标签: javascript jquery html iframe

我们有一个制作carrusel图片的应用程序,我们正在使用iframe插入网页。

我们想删除iframe,我们已经准备好只使用一个div了,这样的话就是我们的用户会在他们的页面中插入:

<script src="https://www.example.com/mycustom-carrusel.min.js"></script>
<div id="custom-unique-id" style="width:100%;height:300px;"></div>

mycustom-carrusel.min.js 让我们所有的代码都缩小了gulp。

我们的javascript将调用我们的API并在div中绘制所有必要的内容,问题是我们正在使用一些库,比如jQuery和其他库。

我们希望防止与例如jQuery或任何其他可能与用户网页冲突的库发生冲突。

实现此目的的最佳技术是什么,并防止与我们的代码发生任何可能的冲突?

谢谢!

1 个答案:

答案 0 :(得分:1)

从嵌入小部件的页面中隔离样式和脚本正是通常使用iframe的原因。继续使用iframe

在某些将来(曾在所有热门浏览器中实施),您可以使用值allunsetinitial CSS属性,而不是iframe,或revert,重置widget元素及其嵌套元素的所有继承样式,然后安全地应用自己的样式。

对于一般的JS库,可能没有通用的方法来防止冲突,但特别是对于jQuery,您可以使用jQuery.noConflict(true)释放$jQuery变量来实现它其他库(包括不同版本的jQuery本身)可以重用这些变量,但只要你能够包含你的jQuery版本并在页面自己的jQuery版本之前调用jQuery.noConflict(true) (这不太可能)。或者,根本不用使用库(在大多数情况下目前实际上不需要像jQuery这样的库),而只是使用你自己的vanilla-JS脚本,或者,如果你真的不能使用库,请尝试包装自动执行匿名函数中的库代码(以及您自己使用该库的代码),以防止它定义的变量泄漏到全局命名空间。