Javascript 外部站点中的非突兀模态窗口

Javascript 外部站点中的非突兀模态窗口,javascript,jquery,unobtrusive-javascript,Javascript,Jquery,Unobtrusive Javascript,对不起,我的标题……我真的很难说出我想问什么 一些网站允许用户复制和粘贴一些小部件,以便与自己的网站一起使用。例如,获取满足感。是的,我希望你们大多数人在不同的地方看到这些反馈图标 如果你看一下,在左边会有一个反馈图标,一旦点击一个漂亮的模式窗口就会出现。模态windows内容位于外部源的iframe中 我很喜欢这个,但我的问题是: 我也可以使用一些jQuery库作为模式窗口,然后将模式内容链接到我页面上的一个站点,但是如何防止它对其他javascript文件的站点造成干扰呢 例如,假设我正在使

对不起,我的标题……我真的很难说出我想问什么

一些网站允许用户复制和粘贴一些小部件,以便与自己的网站一起使用。例如,获取满足感。是的,我希望你们大多数人在不同的地方看到这些反馈图标

如果你看一下,在左边会有一个反馈图标,一旦点击一个漂亮的模式窗口就会出现。模态windows内容位于外部源的iframe中

我很喜欢这个,但我的问题是:

我也可以使用一些jQuery库作为模式窗口,然后将模式内容链接到我页面上的一个站点,但是如何防止它对其他javascript文件的站点造成干扰呢

例如,假设我正在使用我的js代码和相关的jquery代码,并将其缩小为一个文件。用户将我的小部件添加到他们的站点。如果他们使用jQuery,我如何确保我的代码不会干扰他们的代码

最好的方法是使用不太流行的模式窗口库吗

非常感谢。希望这有意义


编辑:我可以编写自己的模式窗口功能代码,但我更愿意使用一个已经实现了这一功能的库

jQuery UI有非常好的对话框组件,应该适合您的用途。在它们内部,您可以实例化一个iframe。见:

如果我理解正确,iframe内容是一个单独的页面,因此该页面中的javascript代码不会干扰调用页面的javascript,但可能我没有正确理解该部分

编辑: 我想我理解你的意思,因为你想打包你将要编写的代码,用iframe打开模态窗口。因此,您希望确保此代码不会干扰用户正在使用的现有jQuery代码


我认为这是jQuery插件的一个很好的用例。通过这种方式,页面用户可以像使用任何jQuery函数一样使用您的函数,从而减少冲突的可能性

您可以仅在需要时动态加载jQuery

首先检查jQuery对象是否存在。如果没有,请添加脚本标记

这方面存在一些挑战,因为在向页面添加脚本标记时,不会出现onload事件,这在不同浏览器中都能正常工作,因此您必须轮询它是否已完全加载,然后才能运行代码

有一篇文章介绍了如何做到这一点:


但是,如果用户有不同版本的jquery库,您可能仍然会遇到问题,尽管您可以通过一些额外的检查来解决这个问题。

的确,这不是问题,但我指的是加载对话框面板的代码等。是的,我在考虑如果他们有不同版本的jquery可能出现的问题。嗯。。。。决定,决定!为链接干杯,我正在阅读它。:-)如果jQuery在noconflict模式下运行,您仍然可以处理这个问题。您可以检查现有jQuery的版本是否正确。如果是这样的话,将它命名为某个名称空间(jq12=jQuery.noConflict(true);),然后您可以加载您的。再次命名它(jq131=…)。最后,您必须使$表示原始jquery。我认为您可以通过简单地添加$=jq12;你必须做所有这些,因为$将属于加载的最新版本。你完全正确。马特:太好了!谢谢你的回答!XDI最近专门为此写了一些东西。这里是GitHub-