Как заставить скрипт Greasemonkey нажимать на a-href без указания c ID или класса - PullRequest
0 голосов
/ 20 марта 2020

Я хочу указать целевой атрибут c a-href с помощью Greasemonkey и щелкнуть его после загрузки страницы.

Сборка сайта выглядит следующим образом (хотя, очевидно, упрощена, все соответствующие идентификаторы / classes / атрибуты включены):

<html>
  <body>
    <div></div>
    <table class=“things”>
      <tbody>
        <tr></tr>
        <tr>
          <td></td>
            <td>
              <table>
                <tbody>
                  <tr></tr>
                  <tr id=“name11317220”>
                    <td></td>
                    <td>
                      <a href=“?id=11317220” onclick="$('#name11317220').remove();">
                        <b>text</b>
                      </a>
                    </td>
                  </tr>
                  <tr id=“name83493894”></tr>
               </tbody>
             </table>
             <p></p>
             <div></div>
           </td>
           <td></td>
         </tr>
       </tbody>
     </table>
  </body>
</html>

(Да, я знаю, что веб-сайт устарел и ужасно закодирован)

Я хочу, чтобы скрипт щелкнул ссылку, расположенную в второй элемент td внутри tr с идентификатором name11317220. Тем не менее: число после 'name' является динамическим c, поэтому я не могу просто указать идентификатор с именем 'name11317220'. Единственный способ (я вижу) нацелиться на него - заставить скрипт щелкнуть по a-href во втором дочернем элементе в первом элементе tr , начинающемся с 'name'.

В основном я хотите, чтобы скрипт автоматически go пересылался на webpage.com/test.php?id=11317220, когда заданное c имя идентификатора постоянно менялось при перезагрузке.

Как выполнить sh this?

Редактировать: добавлен скриншот действительного кода html на случай, если я что-то пропустил в коде.

website code

Ответы [ 2 ]

1 голос
/ 20 марта 2020

Вы можете нацелить класс на внешнюю таблицу и использовать частичное совпадение атрибутов для идентификатора tr, прежде чем находить вложенную ссылку.

console.log(
  $('.things tr[id^="name"] a').get()
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="things">
      <tbody>
        <tr></tr>
        <tr>
          <td></td>
            <td>
              <table>
                <tbody>
                  <tr></tr>
                  <tr id="name11317220">
                    <td></td>
                    <td>
                      <a href="?id=11317220" onclick="$('#name11317220').remove();">
                        <b>text</b>
                      </a>
                    </td>
                  </tr>
                  <tr id="name83493894"></tr>
               </tbody>
             </table>
             <p></p>
             <div></div>
           </td>
           <td></td>
         </tr>
       </tbody>
     </table>
1 голос
/ 20 марта 2020

Предполагая, что name часть атрибута id на tr имеет значение c, вы можете выбрать его и перейти вниз по DOM к a:

$('tr[id^="name"]:has(td > a) > td > a')[0].click();

Обратите внимание, что это вызывает собственное событие click, а не jQuery, поскольку последнее будет перехвачено, только если обработчик события jQuery привязан к элементу, который при использовании атрибута onclick делает похоже, не тот случай.

...