gpt4 book ai didi

javascript - iPhone 不一致地执行 javascript

转载 作者:行者123 更新时间:2023-11-30 10:36:39 24 4
gpt4 key购买 nike

我有以下链接:

<a href='external-url' class='track' data-type='event' data-category='category'>
Link
</a>

点击链接时,会执行以下函数:

$('a.track').on('click', function(e){
e.preventDefault();

var type = $(this).data("type");
var category = $(this).data("category");

track(type, category);
window.location = $(this).attr("href");
});

track 函数通过 ajax 发布数据并将其存储在数据库中。在桌面浏览器上,这是完全有效的。在 Android 上,这也完全有效。

在 iPhone 上,我看到它 工作了大约 10 次(链接将我带到外部站点而没有添加到数据库),然后它会神奇地开始工作大约 10次!任何人都可以确定问题可能是什么,无论是在我的代码中还是在我忽略的 iOS 中?

最佳答案

track() 可能是一个异步操作。

在其他浏览器中,也许它足够快(而且你很幸运)它在执行 window.location 之前完成了所有任务。但是,这种行为很奇怪。

但是,在 iPhone 上,track() 可能执行得太慢以至于执行 window.location 已经取消操作,因为页面正在退出到另一个页面。这是异步操作的正确行为。它在所有浏览器上的行为也应该相同。

尝试使用回调代替此顺序代码。你传入一个函数,一旦跟踪完成它的工作就会执行:

function track(type,category,callback){
//track operations up here and your ajax setup
//execute callback when ajax operation replies
if(ajaxStatus === 200){
callback();
}
}

//using track, we pass in parameters and the callback
//which when executed, runs the code inside it
track(type,category,function(){
window.location = ...;
});

关于javascript - iPhone 不一致地执行 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13638195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com