【发布时间】:2015-01-26 10:32:48
【问题描述】:
我在许多浏览器上尝试了以下代码,但它不适用于带有 safari 的 iphone,但它适用于 google chrome for iphone。
jQuery(function($){
$('.top-link-checkout').attr('href',checkout_url);
$(".button.btn-cart.btn-prod").click(function(e){
e.preventDefault();
var cart_url = $('.top-link-cart').attr('href');
$(".button.btn-cart.btn-prod").html('<span><i class="fa fa-refresh fa-spin fa-2x add-to-cart-icon"></i>Adding...</span>',
function(){
window.location.href = cart_url;
});
});
});
在带有 safari 的 iPhone 上,它只是转到 url 而不更改 html。
任何想法如何让它在带有 safari 的 iPhone 上运行。
更新
更改了@rory-mccrossan 建议的代码以添加超时:
$('.top-link-checkout').attr('href',checkout_url);
$(".button.btn-cart.btn-prod").click(function(e){
e.preventDefault();
var cart_url = $('.top-link-cart').attr('href');
$(".button.btn-cart.btn-prod").html('<span><i class="fa fa-refresh fa-spin fa-2x add-to-cart-icon"></i>Adding...</span>');
setTimeout(gotocart, 100);
});
function gotocart(){
window.location.href = cart_url;
};
仍然无法在 iphone safari 上运行。
【问题讨论】:
-
鉴于
html()没有第二个参数,我不确定这是如何工作的。无论哪种方式,一旦点击发生,您就会重定向。我假设 Safari iOS 的渲染器在发现发出 HTTP 请求后不会更新 UI。setTimeout()可能会有所帮助,虽然有点老套。 -
它有第二个参数...
-
api.jquery.com/html 不,它有一个 getter,或 2 个分别采用单个字符串或函数的 setter。
-
w3schools.com/jquery/jquery_callback.asp。请解释你为什么认为
I'm not sure how this is working at all。好的,所以我必须使用 setTimeout()。 -
并非所有 jQuery 函数都有回调 - 只有那些在队列上操作或异步的函数。
html()两者都不是。此外,我永远不会将 W3Schools 所说的任何内容称为事实:w3fools.com