1

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

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

笔记:

  • 我无权访问要编辑的第 3 方脚本。
  • 我正在将 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 会中断。如何在使用我无法控制的 3rd 方脚本时防止我的代码中断。

更新

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

4

2 回答 2

1

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

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

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

This blog建议在jQuery之前加载Easing插件时会发生这种情况。很好,我想——我们只需要在我们的 jQuery 加载后加载 WeedMenu 脚本。所以我尝试了以下方法(在此处的帮助下):

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

这给了我这个错误:

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

事实证明,这是由于 WM 脚本使用 的结果而发生的,该脚本document.write已经过时了。所以这让我找到了 crapLoader,它是用来处理这类事情的:

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

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

这是我的叉子——如果你找到任何东西,请告诉我!

于 2013-01-23T00:34:04.603 回答
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 的其余部分。

于 2013-01-26T03:41:22.393 回答