【问题标题】:Safari jquery a href onClick?Safari jquery a href onClick?
【发布时间】:2011-05-16 06:05:35
【问题描述】:

此代码适用于 IE、FF 等,但不适用于 Safari。我不明白这个。

我的网站上有一个链接:

<a href="/show/231" onClick="web('231')">Show</a>

现在是 .js 文件:

function web(id) {
    $("#showIMG").load("/web", {
        id: id
    }, function() {});
}

"/web" 是一个 PHP 文件 (web.php)。在 web.php 中只是一个 php 代码,它在数据库中保存了一个值。

我是 Safari,重定向 (/show/231) 有效。但它没有保存数据库中的值。 “负载”不起作用。

我在这里这样测试过:

function web(id) {
    $("#showIMG").load("/web", {
        id: id
    }, function() {});
    alert('clicked');
}

警报有效。但不是负载?

当我将链接更改为此

<a href="#" onClick="web('231')">Show</a>

“加载”有效,但重定向到 /show/231 无效。

【问题讨论】:

  • 如果有人给出了正确的答案,请点击他们投票数下方的复选标记来选择它。此外,您可能需要考虑注册。我将您的三个帐户合并在一起。

标签: jquery safari hyperlink onclick href


【解决方案1】:

当 Safari 开始导航到下一页时,它会停止您的 AJAX 请求。

为避免这种情况,您需要阻止单击(通过将return false; 添加到处理程序),然后通过在 AJAX 完成处理程序中设置 location.href 来显式导航。

【讨论】:

    【解决方案2】:

    可能页面的变化取消了图像的加载,因为图像将不可见。

    您可以让网络方法调用使用 location.href = "" insted 进行重定向。

    【讨论】:

      【解决方案3】:

      由于 .load 函数是异步的,在浏览器导航到“/show/231”之前,AJAX 请求可能没有时间执行。

      根据您的示例,我会尝试将 .load 更改为 .ajax 并使用以下参数:

      $.ajax({
          async: false, 
          url: '/web', 
          data: 'id=' + id, 
          success: function(){}
      });
      

      'async:false' 参数/值使 AJAX 请求同步而不是异步......这应该可以解决您的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-29
        • 2011-06-24
        • 1970-01-01
        • 1970-01-01
        • 2015-08-19
        • 2023-04-11
        • 2011-04-24
        相关资源
        最近更新 更多