【问题标题】:Use javascript to simulate a click event on javascript: href在javascript上使用javascript模拟点击事件:href
【发布时间】:2021-03-07 19:59:50
【问题描述】:

我正在使用允许我们添加自定义 javascript 的第 3 方系统,我需要一种方法来查找自定义 URL,然后让系统弹出通过单击 href="javascript: 调用的用户登录名: ;"

< a class="nav-link" href="javascript:;"> < b>sign in</b></ a>

注意 class="nav-link" 不是唯一的

我在查找自定义 URL 和执行各种操作时没有问题,但我不知道如何在该 javascript href 上执行模拟点击事件,以便弹出用户登录。

例如登陆:“https://our.site.com/webstoreNew/services/guestprofile” 自定义 URL 部分是“guestprofile”,它不会被主系统重定向并保留

我尝试了以下方法:

<script>
const guest_url = "https://our.site.com/webstoreNew/services/guestprofile";
let current_url = window.location.href;


if(current_url === guest_url) {

$('href="javascript:;"')[0].click();
}

</script>

其他的尝试:

$(javascript:;)[0].click();
$(href="javascript:;")[0].click();

我觉得这可能是语法问题,但需要有人帮助

【问题讨论】:

  • 您问题的 HTML 部分是实际代码的直接副本吗?如果是这样,则锚元素是格式错误的 HTML,因为标签以“
  • 对不起..我输入了空格,但实际代码中没有空格。 登录

标签: javascript jquery href


【解决方案1】:

编辑:更新了更多代码并删除了可以在 sn-p 中运行的代码。

检查下面我的 sn-p,只需创建一个函数并像下面的示例中那样调用它fakeClick();

如果你想定位你提到的href,你可以像这样使用querySelector

const href = document.querySelector('[href="javascript:;"]');

下面的 sn-p 不会触发点击,因为我们使用的是 window.location.href;,stackoverflow sn-ps 不支持它。话虽如此,如果您在项目中运行它,它将按预期运行。

//your guest url
const guest_url = "https://our.site.com/webstoreNew/services/guestprofile";

let current_url = window.location.href;

//this is the a element where we trigger the click
const href = document.querySelector('[href="javascript:;"]');

console.log(href);


//this is the function
//if both are equal it will trigger a click on atag
function fakeClick() {
if(current_url === guest_url) {

href.click();
}
}

//here we are calling the function so it will run immediately
fakeClick();
&lt;a class="nav-link" href="javascript:;"&gt;&lt;b&gt;sign in&lt;/b&gt;&lt;/a&gt;

此外,正如@Oskar Grosser 所提到的,如果您想使用示例中的代码,您只需要更改不正确的调用即可:

$('href="javascript:;"')[0].click();
}

到这里:

$('[href="javascript:;"]')[0].click();
}

如您所见,调整后的 Jquery 与 querySelector 调用匹配,并且应该以相同的方式运行。

【讨论】:

  • 我认为这里的问题是“a”元素。就我而言,没有这样的元素,它只是一个 href="javascript:;"参考。如此处所示登录
  • developer.mozilla.org/en-US/docs/Web/API/Document/querySelector - 您可以使用 querySelector 来查找 href。这是一种强大的方法,可以帮助您引用页面上的任何内容。 - 只需将 atag 查询调用替换为可以引用您的 href 的内容。
  • 我已经更新了我的答案,以展示如何定位该 href。
【解决方案2】:

使用 jQuery,您可以使用 CSS Selectors 查询一个或多个元素。

由于您要查询确切的属性,您必须像这样格式化查询字符串:
[attributeName="value"]

另一个注意事项是,您查询的内容必须在字符串中。在您的其他尝试中,浏览器会尝试解析 javascripthref,就好像它们是变量一样,因此会出现错误。

click() 本身的调用是正确的,会触发点击事件。

// Setup for feedback; ignore
$("a").click(() => console.log("'a' was clicked!"));

// Correct query
$('[href="javascript:;"]').click();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="javascript:;">A link</a>

【讨论】:

  • 这很好,但由于某种原因,系统会这样说: Uncaught TypeError: Cannot read property 'click' of null at guestprofile:42 我已经多次更改 URL 以查看是否是问题,但没有。
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-22
  • 2016-04-15
  • 2019-10-21
  • 1970-01-01
相关资源
最近更新 更多