第三方脚本破坏了我的 JS

3rd Party Script Breaking my JS

本文关键字:我的 JS 坏了 脚本 第三方      更新时间:2023-09-26

>我有一个第三方脚本,在我的网站上显示一些数据。当脚本加载时,它会破坏脚本所在的任何页面上的所有 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小提琴。菜单将打开,但未正确关闭。从杂草图中删除生成菜单的脚本,菜单将正常工作。(杂草地图菜单脚本位于 HTML 面板的底部。

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

就目前而言,Firefox在对菜单进行动画处理时会显示此错误:

TypeError: jQuery.easing

[jQuery.easing.def] 不是函数

本博客建议,当缓动插件在jQuery之前加载时,就会发生这种情况。好吧,我想 - 我们只需要在加载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");

不幸的是,这使我回到了原始的缓动错误。

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

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

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