[英]Preventing JS from being load using JS
现在,我在Shopify上开设了一家商店,而Im使用安装在我们商店中的应用程序。 该应用程序调用脚本如下:
if(!add_to_order_tag)
$('.product_rp_div.p{{ product.id }}').append('<script async class="add_to_order" src="https://ro.boldapps.net/recurring_settings/add_to_order?&shop_url={{ shop.permanent_domain }}&group_id='+group_id+'&customer_id={{ customer.id }}&product_id='+prodId+'&variant_id='+myVariant+'"></'+''+'script>');
该脚本包含对bootstrap.modal.min.js
的调用,该函数已经通过常规的bootstrap.min.js
加载到我的商店中,并且给我带来麻烦,因为我的所有模态都非常快地打开和关闭。 因为此脚本具有使应用程序正常工作的重要功能,但它仅重复了我已经拥有的脚本的加载,我想知道是否有办法防止使用JS加载第二个boostrap.modal.min.js
? 或者是否有很好的方法来防止模式关闭。
这是我的引导程序版本:
//cdn.shopify.com/s/files/1/0154/0015/t/12/assets/bootstrap.min.css?7437598206705920800
这是被称为引导程序模型的版本:
https://ro.boldapps.net/app_assets/js/bootstrap-modal.min.js
在此先感谢您的帮助:D
避免这种令人厌烦的行为的一种方法(有时会在第三方应用程序,库或加载项中发生)是在加载库时简单地重新分配相关模块,然后再放回去。 它虽然不漂亮,但通常可以正常工作:
var bootstrap-temp = Bootstrap.Modal;
loadIrritatingLibrary();
Bootstrap.Modal = bootstrap-temp;
这样至少可以在通话结束时将其恢复为正确的状态。
不幸的是,Bootstrap将自己绑定到jQuery
模块中,因此很难分离出来-实际的jQuery模态函数存储在jQuery.fn.modal
但是鉴于很多模块是隐藏的,您可能需要在其他脚本之后加载Bootstrap已加载。
这两种方法都可以工作,因为JavaScript看到的代码版本是加载的最后一个版本,因此,如果重复分配相同的变量,它将记住最后一个变量,并且可以像对待对象一样将函数视为变量。是。
更好的解决方案是使用RequireJS
类的模块加载程序,该模块加载程序应确保所有内容仅加载一次,但在这种情况下并不总是可用。
这也取决于问题是要重新加载Modal的版本,而不是该脚本中的某些东西会影响绘制模态的方式,从您的描述中也可能是问题所在。 应该可以检查应用程序正在加载的版本,以确认是否存在与此相关的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.