jquery:为什么这不适用于Chrome?

时间:2011-08-09 01:37:46

标签: jquery

<script> 
$(document).ready(function () {
    $('#enter').click(function() {
    $.post('setCookie.php');
    });     
});
</script> 

<div id="enter"> 
    <a href="http://www.mydomain.com">Enter</a> 
</div> 

点击回车时,应该转到mydomain.com并设置一个cookie。它适用于Firefox,但不适用于IE或Chrome。有什么想法吗?

5 个答案:

答案 0 :(得分:2)

可能会在加载Chrome之前访问该网站。您可以在锚标记上将目标属性设置为“_blank”,也可以在$ .post完成后使用回调函数,如下所示:

<script> 
$(function(){
    $('#enter').click(function() {
    $.post('setCookie.php',function(){
window.location = $('#enter a').attr('href');
});
    });     
});
</script> 

<div id="enter"> 
    <a href="http://www.mydomain.com" onclick="return false;">Enter</a> 
</div> 

答案 1 :(得分:2)

试试这个

$(document).ready(function () {
    $('#enter a').click(function(e) {
       e.stopPropagation();
       var href = this.href;
       $.post('setCookie.php', function(){
          window.location.href = href;
       });
    });     
});

答案 2 :(得分:1)

尝试

$('#enter a').click(function() {

编辑:你有一个POST进行锚定点击,然后GET进行锚点本身。接缝在浏览器上发生冲突。

为了获得更好的效果,请在设置Cookie后创建SetCookieAndRedirect.php页面并执行重定向到网址。

答案 3 :(得分:0)

请记住.post()调用是异步的,因此函数的其余部分将继续在.post()在后台运行时流动。您需要在帖子中使用回调函数:如果您不想要错误检查,可以跳过if / else并只调用重定向。

$(document).ready(function() {
    $.post('ajax/test.html', function(data) {

      if (data.success === 'cookieset')
      {
          // redirect to page
              window.location.replace("http://mydomain.com");
      }
      else
      {
          // put some sort of notification here that it wasn't set and decide what to do next
              window.location.replace("http://mydomain.com");
      }

    });
});

就重定向而言,您可以使用:

模拟http重定向使用

window.location.replace("http://mydomain.com");

或模拟点击链接使用

window.location.href = "http://mydomain.com";

答案 4 :(得分:-1)

我会做

<a href="javascript:$.post('setCookie.php');window.location='http://www.mydomain.com'">abc</a>