我有第三方脚本,在我的网站上显示一些数据。当脚本加载时,它会破坏脚本所在的任何页面上的所有JS。我删除了脚本,我的页面无问题。
是否有办法阻止第三方脚本以破坏页面的方式与我的页面进行交互?
备注:
jQuery.noConflict
但它仍然打破了页面。 注意:以下代码可能包含药物内容的参考/链接,主要是大麻。
我正在建立一个医用大麻药房的网站。我从一个名为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面板的底部。)
答案 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。