第三方脚本打破我的JS

时间:2013-01-22 21:59:35

标签: javascript jquery

我有第三方脚本,在我的网站上显示一些数据。当脚本加载时,它会破坏脚本所在的任何页面上的所有JS。我删除了脚本,我的页面无问题。

是否有办法阻止第三方脚本以破坏页面的方式与我的页面进行交互?

备注:

  • 我无法访问要编辑的第三方脚本。
  • 我正在使用jQuery打破破解的脚本。我已经到位jQuery.noConflict但它仍然打破了页面。
  • 我试图在iframe中加载脚本以查看是否有所不同。它没有。
  • 脚本会将数据写入页面,主要是CSS和HTML

注意:以下代码可能包含药物内容的参考/链接,主要是大麻。

我正在建立一个医用大麻药房的网站。我从一个名为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中断了。如何防止我的代码在使用我无法控制的第三方脚本时中断。

更新

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

2 个答案:

答案 0 :(得分:1)

嗯,没有太多运气。我会添加我所拥有的内容,因为它可能引发您的进一步想法。但是,简而言之,我认为他们的剧本编写得不是很好,而且他们确实需要在他们的最后修复它。

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

  

TypeError:jQuery.easing [jQuery.easing.def]不是函数

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

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

这给了我这个错误:

  

忽略了从异步加载的外部脚本调用document.write()。

事实证明,由于使用document.write的WM脚本,这种情况很可能已经过时了。因此,引导我找到crapLoader,这是为了处理这类事情:

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

不幸的是,这让我回到原来的缓和错误。

Here's my fork - 如果您找到任何内容,请与我们联系!

答案 1 :(得分:1)

脚本编写得不好,我能够通过从脚本中删除一行代码来解决我的问题。我提供的链接列表更长的脚本。脚本有这行代码:

try {
    b("http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"), "function" != typeof wmenu_strains_callback && b("http://legalmarijuanadispensary.com/components/com_weedmenu/weedmenu.js", !0)
} 

如果我删除b("http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"),,则脚本可以正常工作,而且我的页面可以正常工作。发生的事情是脚本将jQuery插入到我的脑海并打破了我的其他javascript。