提问者:小点点

第三方脚本打破我的JS


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

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

注意事项:

  • 我无法访问要编辑的第3方脚本。
  • 我正在使用jQuery来处理正在破坏的脚本。我有jQuery. no冲突但它仍然会破坏页面。
  • 我尝试在iframe中加载脚本以查看这是否有所不同。它没有。
  • 脚本确实会向页面写入数据,主要是CSS和超文本标记语言

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

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

更新

这是一个JSFiddle。菜单打开但没有正确关闭。从weedmap中删除生成菜单的脚本,菜单就会正常工作。(weedmap菜单脚本位于超文本标记语言面板的底部。)


共2个答案

匿名用户

嗯,运气不太好。我会补充我所拥有的,因为这可能会引发你更多的想法。不过,简而言之,我认为他们的剧本写得不是特别好,他们确实需要解决这个问题。

就目前而言,Firefox在为菜单设置动画时显示此错误:

TypeError:jQuery.和[jQuery. asing.def]不是一个函数

这个博客建议在jQuery之前加载Ease插件时发生这种情况。好吧,我想-我们只需要在jQuery加载后加载WeedMenu脚本。所以我尝试了以下方法(在这里的帮助下):

$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");

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

这是我的叉子-如果你找到什么,请告诉我!

匿名用户

脚本写得不好,我可以通过从脚本中删除一行代码来解决我的问题。我提供的链接列出了一个更长的脚本。脚本有这行代码:

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的其余部分。