页面无法重定向和清除URL参数

时间:2017-06-19 21:03:01

标签: javascript php facebook button mobile-safari

我有一个网页向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并尝试正常使用它,它加载正常。我不知道是什么原因引起的,所以我不确定是否还有其他相关信息值得发帖,但如果有必要我可以说更多。

2 个答案:

答案 0 :(得分:1)

Safari不能很好地处理函数中的返回false,特别是没有返回。我会在html元素中包含一个onsubmit="return function();",我猜这是一个表单。您还可以通过$('[the form ID]').submit(function(){ do something here; return false;});

将此附加到submit()事件侦听器

答案 1 :(得分:0)

我是对的,我认为我没有提供足够的细节,但似乎因为有问题的按钮位于<form>标签内并充当提交按钮,这就搞砸了。为了解决这个问题,我删除了form(因为我没有在任何地方提交任何数据,只是使用按钮来重定向页面),它解决了问题。现在它适用于桌面和移动浏览器。