在物理上单击一个页面上的按钮,打开另一个页面并虚拟单击那里的项目

时间:2017-12-01 13:10:17

标签: jquery wordpress

我在wordpress网站的主页上有一个按钮。现在它只是打开另一页。当用户实际点击此按钮时,我还希望在新打开的页面上执行一些虚拟点击操作。可能我错过了一些东西。

主页上的按钮是这样的:

<a class="btn" href="http://localhost/mysite/anotherpage/">Go to another page</a>

Jquery代码是(我使用延迟让新页面加载(它没有工作:()):

  $("#menu-invite-section btn").on("click", function () {
    $(document).delay(700).find($("#another-button")).click();
  });

我尝试了.click().trigger("click")。 提前感谢大家!

2 个答案:

答案 0 :(得分:1)

如果链接在同一个窗口中,则无法进行此操作 - 当您想要触发点击的按钮存在时,尝试单击它的代码将消失(因为新页面已替换了包含脚本的页面。

如果链接以新窗口或标签为目标,您可以保留对window.open对象的引用并在其中进行搜索:

$("a.btn").click(function(e) {
  e.preventDefault();
  var newWindow = window.open($(this).attr("href"));
  newWindow.addEventListener('load', function() { // don't use arbitrary setTimeout values when you can listen for a real event
    $(newWindow.document).find('#another-button').trigger('click');
  });
});

请注意,CORS限制意味着只有在页面位于同一域和真实服务器上时才会有效(它不适用于file://网址。)

答案 1 :(得分:-1)

检查一下,

class AuthZoneController < ApplicationController
  include Current

  before_action :authenticate_user
  around_action :set_current_user

  private

  def set_current_user
    Current.user = current_user
    yield
  ensure
    # to address the thread variable leak issues in Puma/Thin webserver
    Current.user = nil
  end

end


# /app/controllers/concerns/current.rb
module Current
  thread_mattr_accessor :user
end
$('.btn').click(function (e) {
    e.preventDefault();                   // prevent default anchor behavior
    
    var goTo = $('#another-button').attr("href"); // store anchor href

    // do something while timeOut ticks ... 

    setTimeout(function(){
         window.location = goTo;
    },700);       
}); 

希望这会对你有所帮助。