Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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 click(处理程序)在Greasemonkey脚本中发现输入元素为空(但是addEventListener可以工作)_Javascript_Jquery_Dom Events_Greasemonkey - Fatal编程技术网

Javascript click(处理程序)在Greasemonkey脚本中发现输入元素为空(但是addEventListener可以工作)

Javascript click(处理程序)在Greasemonkey脚本中发现输入元素为空(但是addEventListener可以工作),javascript,jquery,dom-events,greasemonkey,Javascript,Jquery,Dom Events,Greasemonkey,我有一个Greasemonkey脚本,它在JIRA和票证应用程序之间做了一些关联。当您将一个项目与JIRA票证关联时,它会向JIRA发布一些API,以将另一个票证添加到JIRA中,因此它是双向的。我无法控制更改的相关HTML是: <div id="related_inputs" class="related-items-actions-inner"> <label class="align" style=&qu

我有一个Greasemonkey脚本,它在JIRA和票证应用程序之间做了一些关联。当您将一个项目与JIRA票证关联时,它会向JIRA发布一些API,以将另一个票证添加到JIRA中,因此它是双向的。我无法控制更改的相关HTML是:

<div id="related_inputs" class="related-items-actions-inner">
    <label class="align" style="width: 104px;">full_jira_url: </label>
    <input type="text" style="margin-left: 109px;">
    <br>
</div>
和按钮:

<a id="relate-button" class="tt_button">
  <span id="relate-button-text">Relate</span>
</a>
基本上,当用户点击按钮/链接时,我想在上面的相关输入div中提取输入值,然后做一些其他的事情。它曾经工作过,现在已经不再工作了,所以我不确定这是由于浏览器回归、JIRA更改还是我编写脚本的网站代码的更改

Greasemonkey脚本的要点是:

(function () {
  console.log("Started script!");

  $('#relate-button').click( function(event) {

    var related_ticket_type = $('#related_inputs label').text().trim();
    console.log("ticket type is " + related_ticket_type);
    if (related_ticket_type != JIRA_LABEL_TEXT) { 
      return;
    }

    var jira_url = $('#related_inputs input').val();
    console.log(jira_url);  // <<== this is "" all the time now even when the input has data in it when pressed
    
    var match = jira_url.match(JIRA_REGEX);

    if (match.length != 2) {
      console.log("We didn't match the URL to a valid RDS Jira url.")
      return;
    }
    ...
问题是我从输入元素得到的值每次都是空的。我已经在控制台中确认它是正确的输入元素。label元素是正确的,因为它将到达输入代码

有什么想法或建议吗


在我发现了下面的问题之后,问题归结为:jQuery的.clickhandler与element.addEventListener'click',functionevent{…},true之间有什么区别?

因此,我没有使用jQuery的.clickhandler,而是做了以下工作:

var button_el = document.getElementById('relate-button');

button_el.addEventListener( 'click', function(event) {....}, true);
这样做修复了url的值不是空的问题。然而,我真的很想知道为什么这解决了我的问题


我正在使用Greasemonkey 1.15。

什么版本的Greasemonkey?通用汽车2号失去了一些东西。您的元数据块是什么?链接到整个脚本也是最好的控制台日志$'related_inputs input',并三次检查它是否是预期的节点。是的,确实找到了正确的节点,只是由于一些同步问题,值=即使在单击链接时文本输入中有文本。addEventListener解决了这个问题,虽然我不知道为什么。啊,所以我用了。点击。。。以及一个将事件附加到外部div的委托,以防网站正在执行一些AJAX,但它仍然发现文本输入字段是空的标签总是正确的,并且div中只有一个输入,因此输入对象是正确的,只有一个空值=。还有其他想法吗?