gpt4 book ai didi

Javascript更改位置href并单击某个按钮

转载 作者:行者123 更新时间:2023-11-29 17:52:38 25 4
gpt4 key购买 nike

我想将用户 onclick 重定向到某个页面“user/logged_in1”,如果用户不在该页面上并且在重定向之后必须单击某个按钮。此按钮打开模式。

不适用于此功能:

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 %}

如您所见,按钮成为重定向按钮有一定的触发条件。

编辑

好的,使用 cookie 听起来是一个可行的解决方案。但是我无法弄清楚如何在单击按钮后删除 cookie,建议的代码都不起作用,尽管它看起来很简单:

function redirect_to_logged_in_and_open_modal() {
if(window.location.href.indexOf("logged_in") > -1) {
return
} else {
location.href="user/logged_in1";
document.cookie = "redirected_coz_of_click";
}
}

$( document ).ready(function() {
if ($(".logged-in-container")[0]) {

var delete_cookie = function(name) {
document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};

if (document.cookie.indexOf('redirected_coz_of_click') > -1 ) {
document.getElementsByClassName("zimmerbtn")[0].click();
delete_cookie('redirected_coz_of_click');
console.log(document.cookie);
} else {
console.log("cookie removed");
}
}
});

最佳答案

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];
}
}
};

在这里找到方法:https://stackoverflow.com/a/21903119/3514785

所以你可以这样使用它:

var btnToClickId = getUrlParameter("click");

3:使用 jquery(如果需要,也可以使用 javascript)触发该 btn 上的点击事件:

$("#"+btnToClickId).click();

注意:您想在页面加载后进行检查:

$(window).on("load",function() {
var btnToClickId = getUrlParameter("click")
if(btnToClickId) {
$("#"+btnToClickId).click();
}
});

总结一下

a:编辑您的页面并删除此行 document.getElementsByClassName("zimmerbtn")[0].click(); 因为它毫无意义

b: 在js中的目标页面中复制并粘贴“getUrlParameter”方法。

c: 然后在窗口加载事件监听器中执行 3 中指定的 url 检查。

替代 URL 参数

您可以在重定向之前使用 localStorage 或某些 cookie 来存储目标 ID。确保你记得在抓取它之后在目标页面中清除它,这样即使你没有从触发整个过程的页面重定向,它也不会总是被触发。

关于Javascript更改位置href并单击某个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41953230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com