Javascript更改位置href并单击某个按钮
如果用户不在某个页面上,我想将用户onclick重定向到某个页面“user/logged_in1”,重定向后必须单击某个按钮。此按钮将打开一个模式对话框 不适用于此功能:Javascript更改位置href并单击某个按钮,javascript,jquery,html,Javascript,Jquery,Html,如果用户不在某个页面上,我想将用户onclick重定向到某个页面“user/logged_in1”,重定向后必须单击某个按钮。此按钮将打开一个模式对话框 不适用于此功能: function redirect_to_logged_in_and_open_modal() { if(window.location.href.indexOf("logged_in") > -1) { return } else { location.href="u
function redirect_to_logged_in_and_open_modal() {
if(window.location.href.indexOf("logged_in") > -1) {
return
} else {
location.href="user/logged_in1";
document.getElementsByClassName("zimmerbtn")[0].click();
}
}
在重定向发生之前,它似乎已经搜索了按钮,因此列表为空。如何解决这个问题
编辑
这有点复杂。仅当用户使用重定向时,模式才会打开。如果我在body标签上使用onload
,如果页面被加载,模态将始终打开,我不需要它。我只需要在重定向发生时打开该模式
整个过程就是一个Python flask应用程序:
{% if current_user.zahlung_iban == None and have_this_user_a_room != None %}
<li><a class="btn mybtn" onclick="redirect_to_logged_in_and_open_modal()" data-toggle="modal" data-target="#premium-special-modal"> Zimmer anbieten </a></li>
{% else %}
<li><a class="btn mybtn" href="{{ url_for('zimmer_einstellen') }}"> Zimmer anbieten </a></li>
{% endif %}
而不是触发单击。在用户/logged\u的方法的body onload中调用onclick函数
<body onload="openModal()">
您无法访问尚未加载的元素。 通过使用location.href=''您只是将用户定向到一个页面,之后的任何javascript都将失败,因为该页面尚未加载 您告诉我们您想将用户重定向到页面onclick。这听起来像是锚定标记的本质:
对于步骤2,只需将javascript放在重定向到的页面上。绑定到页面的加载事件,然后执行javascript:
window.onload = function() {
document.getElementsByClassName("zimmerbtn")[0].click();
};
您正试图访问初始页面上的内容,但您已经从该页面重定向了用户,因此当前方法无法实现此目的 我相信你正在尝试做的是打开一个模式,在重定向之后,执行以下操作 在重定向页面上添加以下内容,使用jquery实现这一点
$( document ).ready(
// add the functionality to launch modal here
);
你可以用饼干
当用户单击重定向按钮时设置cookie,当页面加载时,检查cookie是否已设置并打开模式。打开模式后,清除cookie。通过这种方式,您可以很容易地实现这一点。1:将参数附加到重定向url
user/logged_in1?click=btn_id
2:登陆该页面后,您可以检查参数是否存在。找到了这个方法
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : sParameterName[1];
}
}
};
3:使用jquery(或者javascript,如果需要)在该btn上触发click事件:
$("#"+btnToClickId).click();
注意:您希望在页面加载后执行检查:
$(window).on("load",function() {
var btnToClickId = getUrlParameter("click")
if(btnToClickId) {
$("#"+btnToClickId).click();
}
});
总而言之
a:编辑页面并删除此行文档。GetElementsByCassName(“zimmerbtn”)[0]。单击()代码>因为它毫无意义
b:在js副本的目标页面中,并通过“getUrlParameter”方法
c:然后在窗口加载事件侦听器中,按照3中的规定执行url检查
URL参数的备选方案
您可以在重定向之前使用localStorage或一些cookie来存储目标id。确保抓取后记得在目标页面中清除它,这样即使您没有从触发整个过程的页面重定向,也不会总是触发它。我为该按钮创建了onclick()函数:
onclick="redirect_to_logged_in_and_open_modal()"
在函数中,我检查我是否尚未登录到站点。如果不是,我将重定向,但我将向URL添加一个附加参数?重定向
在下一步中,如果加载了已登录的_,并且参数位于URL中,则模式也将打开,即它
感谢@Zuks为URL添加参数的想法
function redirect_to_logged_in_and_open_modal() {
if(window.location.href.indexOf("logged_in") > -1) {
return
} else {
window.location.assign("https://www.example.com/user/logged_in1?redirected");
}
}
$( document ).ready(function() {
if ($(".logged-in-container")[0]) {
if(window.location.href.indexOf("redirected") > -1) {
document.getElementsByClassName("zimmerbtn")[0].click();
}
}
});
在将访问者重定向到另一个页面后,如何触发页面中某个元素的单击事件?您的功能正在当前页面上执行。不在您正在重定向用户的页面上。你需要有一个函数(可能在onLoad事件上),当用户登陆你重定向他的页面时,该函数将执行。这听起来像是我需要的。将检查如何实现,您可以在重定向页面的$(document).ready(function())中检查它。
onclick="redirect_to_logged_in_and_open_modal()"
function redirect_to_logged_in_and_open_modal() {
if(window.location.href.indexOf("logged_in") > -1) {
return
} else {
window.location.assign("https://www.example.com/user/logged_in1?redirected");
}
}
$( document ).ready(function() {
if ($(".logged-in-container")[0]) {
if(window.location.href.indexOf("redirected") > -1) {
document.getElementsByClassName("zimmerbtn")[0].click();
}
}
});