我正在使用脚本将产品添加到网上商店的购物车中。在其他浏览器中,该功能正常运行,但在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上,该产品根本没有添加到购物车中。
答案 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
}