javascript - 第 3 方脚本破坏了我的 JS

标签 javascript jquery

我有一个在我的网站上显示一些数据的第 3 方脚本。当脚本加载时,它会破坏脚本所在的任何页面上的所有 JS。我删除脚本并且我的页面可以正常工作。

有没有办法防止第 3 方脚本以破坏页面的方式与我的页面交互?

注意事项:

  • 我无权访问要编辑的第 3 方脚本。
  • 我正在为有问题的脚本使用 jQuery。我已经设置了 jQuery.noConflict 但它仍然会破坏页面。
  • 我已尝试将脚本加载到 iframe 中以查看是否有所不同。它没有。
  • 脚本确实向页面写入数据,主要是CSS和HTML

注意:以下代码可能包含对毒品内容的引用/链接,主要是大麻。

我正在为医用大麻药房 build 网站。我正在从一个名为 WeedMaps 的网站导入药房的菜单。他们的嵌入代码如下所示:

<script type="text/javascript">var wmenu_id = 1111;</script> //The number correlates to the menu I need to pull, I have changed it in this question
<script type="text/javascript" src="http://legalmarijuanadispensary.com/components/com_weedmenu/weedmenu-widget.js"></script>

当我使用上面的代码时,我网站的 JS 中断了。在使用我无法控制的第 3 方脚本时,如何防止我的代码被破坏。

更新

这是一个JS Fiddle .菜单打开但未正确关闭。删除从 weedmaps 生成菜单的脚本,菜单可以正常工作。 (weedmaps 菜单脚本位于 HTML 面板的底部。)

最佳答案

嗯,运气不太好。我会添加我所拥有的,因为它可能会引发您的进一步想法。但是,简而言之,我认为他们的脚本写得不是特别好,他们确实确实需要最终修复它。

目前,Firefox 在动画菜单时显示此错误:

TypeError: jQuery.easing[jQuery.easing.def] is not a function

This blog表明当在 jQuery 之前加载 Easing 插件时会发生这种情况。好吧,我想——我们只需要在我们的 jQuery 加载后加载 WeedMenu 脚本。所以我尝试了以下(在 from here 帮助下):

$j.getScript('http://legalmarijuanadispensary.com/components/com_weedmenu/weedmenu-widget.js');

这给了我这个错误:

A call to document.write() from an asynchronously-loaded external script was ignored.

事实证明,这是由于 WM 脚本使用了 document.write,它已经过时了。所以这让我找到了crapLoader ,这是为了处理这种事情:

crapLoader.loadScript("http://legalmarijuanadispensary.com/components/com_weedmenu/weedmenu-widget.js", "menu-script");

不幸的是,这让我回到了最初的 Easing 错误。

Here's my fork - 如果你发现了什么,请告诉我!

关于javascript - 第 3 方脚本破坏了我的 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14468824/

相关文章:

javascript - 元素可以使用外部 CSS 设置样式吗

javascript - 这两者是否相同,或者其中一个比另一个更好/更安全?

javascript - 在 Electron 中打开本地文件并在 wavesurfer.js 中渲染

jquery - 使用 RGBa 更改 div 的背景不透明度

javascript - PHP/jQuery 不只在文本输入中更新数据库?

javascript - 如何将当前HTML+PHP页面代码存储为字符串并用其生成PDF文件

javascript - Chrome 的安全性阻止我发送电子邮件,Android 也会阻止它吗?

jquery - 如何根据光标点击的位置定位弹出div

jquery - Symfony2 : AJAX request : How to handle authentication when needed?

javascript - 加载 angularjs 路由后运行 javascript 代码