繁体   English   中英

脚本适用于其他浏览器但不适用于Firefox

[英]Script works in other browsers but not in Firefox

我正在使用脚本将产品添加到我的在线商店的购物车中。 在其他浏览器中,该功能正常工作但在Firefox中,产品从未添加到购物车中,我不知道为什么。

我已经阅读过Firefox没有提供全局事件对象的内容,但我不知道如何解决这个/我实现该对象的位置。

https://mylily.eu/pages/1-box-gratis-im-slipeinlagen-abo

这是我想通过点击“In den Warenkorb”将产品添加到购物车的产品页面之一。

下面是一些代码片段,第一个是EventListener,onClick使用变量值执行实际的addItemToCart函数。 变量amount_slipeinlagen是一个可更改的全局变量,该值是在addItemtoCart函数上传递的:

<script>
document.getElementById("add-to-cart-button").addEventListener("click", function(){

     addItemToCart(variantid_slipeinlagen, amount_slipeinlagen, frequency_slipeinlagen , "Weeks", "199014")
})
</script>



<script>
function addItemToCart (variant_id, quantity, shipping_interval_frequency, shipping_interval_unit_type, subscription_id) {
  data = {
"quantity": quantity,
"id": variant_id,
"properties[shipping_interval_frequency]": shipping_interval_frequency, 
"properties[shipping_interval_unit_type]": shipping_interval_unit_type,            
"properties[subscription_id]": subscription_id
}
  jQuery.ajax({
  type: 'POST',
  url: '/cart/add.js',
  data: data,
  dataType: 'json',
  success: function() { 
      window.location.href = '/cart'; 
  }
  });
  window.location = '/checkout';

}

</script>

在Firefox上,产品根本没有添加到购物车中。

答案只能作为问题的指南,因为它很广泛。

浏览器有Javascript环境。 他们每个人都运行特定版本的Javascript。 这些是供应商(谷歌浏览器,Firefox,Safari,IE)。 事实上,他们的JS引擎采用了独立的Ecmascript标准(Javascript的标准体)。

它还取决于您为每个浏览器运行的版本。

因此,您很可能使用Firefox当前版本不支持的某些语法。

您可以做的是检查控制台是否有错误,然后慢慢缩小生成错误的文件或代码。 一旦确定了确切的代码。 尝试在不同的浏览器中测试运行代码。

Babel这样的工具使您可以使用所有最新功能而不会出汗,并将其转换为所有浏览器的统一代码。 你必须配置一次。

现在,手动替换麻烦的代码就足够了。 可能你正在使用这种浏览器不支持的最新语法。 借助pollyfill或将其替换为您的应用需要运行的所有目标浏览器支持的Javascript代码版本。

希望能帮助到你!

当你执行location.href = "/checkout" ,你将离开当前页面,同时杀死页面及其所有脚本。
jQuery.ajax确实启动的异步XMLHttpRequest也可能在此过程中被浏览器杀死。

简单地删除此行将使您的代码在Firefox中工作(通过在控制台中粘贴此代码进行测试):

function addItemToCart(variant_id, quantity, shipping_interval_frequency, shipping_interval_unit_type, subscription_id) {
  data = {
    "quantity": quantity,
    "id": variant_id,
    "properties[shipping_interval_frequency]": shipping_interval_frequency,
    "properties[shipping_interval_unit_type]": shipping_interval_unit_type,
    "properties[subscription_id]": subscription_id
  }
  jQuery.ajax({
    type: 'POST',
    url: '/cart/add.js',
    data: data,
    dataType: 'json',
    success: function() {
      // only when we succeed do we redirect
      window.location.href = '/cart';
    }
  });
// do not redirect now

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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