【问题标题】:Click event triggered from parent page not working in IE从父页面触发的单击事件在 IE 中不起作用
【发布时间】:2017-03-31 22:45:47
【问题描述】:

我正在使用页面上的过滤器来显示不同的产品。我正在尝试这样做,以便当您从外部页面单击按钮时,它会导航到产品页面并自动单击“有机过滤器”复选框,然后显示有机项目。此代码适用于除 IE 和 EDGE 之外的所有浏览器。有什么想法可能是错的吗?它似乎点击了有机物复选框,但实际上并没有点击 IE 和 EDGE 的提交按钮。

**更新:如果我在 window.load 函数之后发出警报,它会起作用。我认为这是一个时间问题或什么的。有人有什么建议吗?

//force organic filter if coming from organics article
    $(window).load(function(){
    var organicURL = document.referrer;
    if (organicURL === "http://www.sampleurl.com") {
       $('#organicFilter').trigger('click');
       if ($('#organicFilter').is(':checked')) {
          $('#submitFilter').trigger('click');
       }
    }
    });

【问题讨论】:

标签: javascript jquery


【解决方案1】:

为了触发点击事件,你应该使用jQuery .click() 函数。另外,请看这里:jQuery.trigger('click') not working 和这里 : Trigger click event not working in IE10

【讨论】:

  • 谢谢。如果我先发出警报,它似乎会起作用。我认为这是一个时间问题。有什么办法可以解决这个问题?
【解决方案2】:

我通过在下面添加这个来修复它:

$(window).load(function(){
var organicURL = document.referrer;
if (organicURL === "http://www.centowine.com/articles/2017/cento_organics.php") {
   $('#organicFilter').trigger('click');
   if ($('#organicFilter').is(':checked')) {
     setTimeout(function(){ $('#submitFilter').click()}, 500);
   }  
}
});

只需要添加一个超时,它加载得太快了。加载文档之前。

【讨论】:

  • 添加超时以运行您的代码不是一个合适的解决方案。这类似于获取 nullpointer 异常并通过添加 if 语句来修复它(如果变量为 null,请执行此操作)。
  • @geo 你有什么推荐的?
  • 如果问题是“时间”意味着您进行了异步调用并且您不知道您的承诺何时会得到解决。如果发生这种情况,您可以创建一个 Promise 并在您的 Promise 解决后运行您的代码。
猜你喜欢
  • 1970-01-01
  • 2022-07-13
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多