Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果URL与JS匹配,请单击按钮_Javascript - Fatal编程技术网

Javascript 如果URL与JS匹配,请单击按钮

Javascript 如果URL与JS匹配,请单击按钮,javascript,Javascript,网站上有一个“立即预订”标签。当您单击它时,它将打开一个窗体。如果URL是www.example.com/en/?emailer,我需要使按钮自动打开。我试过这个: if (window.location.href == "http://www.example/en/?emailer") { document.getElementsByClassName("tab")[0].click(); } 问题是,如果我将这段代码粘贴到控制台的页面上,它就会工作。但是,当我将它添加到header.p

网站上有一个“立即预订”标签。当您单击它时,它将打开一个窗体。如果URL是
www.example.com/en/?emailer
,我需要使按钮自动打开。我试过这个:

if (window.location.href == "http://www.example/en/?emailer") {
  document.getElementsByClassName("tab")[0].click();
}
问题是,如果我将这段代码粘贴到控制台的页面上,它就会工作。但是,当我将它添加到header.php WordPress文件时,它不起作用

你知道为什么它在控制台而不是
中工作吗?有人能告诉我怎么做吗


注意:如代码部分所示,该选项卡具有类“tab”。

事实上,问题在于,在执行脚本时,DOM树尚未完全构建。一个快速的解决方案将是一个简单的方法

setTimeout(function () {
    if (window.location.href == "http://www.example/en/?emailer") {
        document.getElementsByClassName("tab")[0].click();
    }
}, 0);

这样,您将等待事件循环中的下一个勾号,直到DOM树设置完成。

您应该使用onreadystatechange进行此操作

$(document).on('readystatechange', function() {
    if (window.location.href == "http://www.example/en/?emailer") {
        document.getElementsByClassName("tab")[0].click();
    }
}); 
试试这个

jQuery(document).ready(function( $ ) {
    if (window.location.href == "http://www.example/en/?emailer") {
        document.getElementsByClassName("tab")[0].click();
    }
});

当我将它添加到header.php WordPress文件时,它不起作用。
听起来你执行这个逻辑太早了;即,在DOM完全加载之前。我建议把它放在
标记之前,或者放在文档
加载
事件句柄中。哦,我怀疑这一点,让我试试,所以这不是jQuery。@Alexiami只需将它包装在
(function(){xyz})(
DOMContentLoader
侦听器中即可。我不认为setTimeout是2018年的好做法,如果您有捕捉此类问题的特殊事件,那么我尝试了,并且出于某种原因,页面上的所有其他脚本都停止工作:/I将其添加到标题中,或者我尝试了,并且出于某种原因,页面上的所有其他脚本都停止了工作:/I将其添加到标题中。在此之前,它应该在标题和正文结尾中工作
标签。如果不起作用,请尝试检查浏览器控制台中的javascript错误。如果要在html中添加此代码,还需要在
{code}
标记中添加此代码