繁体   English   中英

防止使用JS加载JS

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM