我有一个网页向PHP脚本发出POST请求。根据请求的结果,按钮的onclick事件将重定向设置为两个页面之一。
<button id="button" type="submit">Proceed</button>
...
$.post('script.php', {
key: value
}, function(result) {
if (result != null) {
document.getElementById("button").onclick = function() {
window.top.location.href = "https://example.com/page?otherkey=othervalue";
}
} else {
document.getElementById("button").onclick = function() {
window.top.location.href = "https://example.com/otherpage?otherkey=othervalue";
};
}
});
这适用于桌面浏览器,但在iOS上的Safari(在iOS 10.3.2上专门测试)上单击按钮后,页面刷新并且不会重定向到正确的站点。此外,它还清除以前存在的任何URL参数。因此,例如,如果带有按钮的页面为example.com/page?key=value
,则页面将刷新并变为example.com/page?#_=_
。我已经尝试过调试和检查Javascript控制台,但它没有说什么。
重定向是我自己域中的一个页面,但带有该按钮的页面已集成到Facebook应用页面中,如果相关的话。
此外,如果我自己构建URL并尝试正常使用它,它加载正常。我不知道是什么原因引起的,所以我不确定是否还有其他相关信息值得发帖,但如果有必要我可以说更多。
答案 0 :(得分:1)
Safari不能很好地处理函数中的返回false,特别是没有返回。我会在html元素中包含一个onsubmit="return function();"
,我猜这是一个表单。您还可以通过$('[the form ID]').submit(function(){ do something here; return false;});
答案 1 :(得分:0)
我是对的,我认为我没有提供足够的细节,但似乎因为有问题的按钮位于<form>
标签内并充当提交按钮,这就搞砸了。为了解决这个问题,我删除了form
(因为我没有在任何地方提交任何数据,只是使用按钮来重定向页面),它解决了问题。现在它适用于桌面和移动浏览器。