脚本可在其他浏览器中使用,但不能在Firefox中使用

时间:2019-05-07 10:26:51

标签: javascript jquery 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上,该产品根本没有添加到购物车中。

2 个答案:

答案 0 :(得分:0)

答案是广泛的,只能作为该问题的指南。

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

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

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

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

Babel之类的工具使您能够使用所有最新功能,而不会费力气,并将其转换为所有浏览器的统一代码。您确实需要配置一次。

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

希望有帮助!

答案 1 :(得分:0)

执行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

}