Изменить URL-адрес клика в кнопке - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь изменить URL в событии onclick кнопки.Ниже приведен исходный текст кнопки и текст, который я хотел бы удалить из части клика.Конечная цель - создать скрипт Tampermonkey, который позволит мне легко загружать STP-файлы без ручного редактирования ссылки после ее щелчка.

Удалить

"fusion360://command=insert&file=" + 

Из

<button type='button' class="event btn btn-default btn-lg btn-block" onclick='window.location.href = "fusion360://command=insert&file=" + encodeURIComponent("https://assets.sas-automation.com/cad/SWM%203.stp");' data-category="Product Sidebar Right" data-action="Button Click" data-label="Opened CAD File in Fusion" aria-label="button">Open in Fusion360</button>

1 Ответ

0 голосов
/ 29 мая 2018

Есть много способов добиться этого, вот один, который мне пришёл в голову:

  1. Используйте getElementsByClassName (или любую другую функцию селектора), чтобы получить кнопку
  2. Сохранитьзначение атрибута onclick (текстового типа) для переменной
  3. Найдите указанную подстроку и замените ее пустой строкой
  4. Сохраните результат обратно в атрибут onclick кнопки.

ПРИМЕЧАНИЕ: у вашего решения есть недочёт: для правильного перенаправления по нажатию кнопки вы должны удалить метод encodeURIComponent, так как кажется, что URL уже закодирован.

И тебе следует идти.Вы можете играть с фрагментом.

var button = document.getElementsByClassName('event btn btn-default btn-lg btn-block')[0];
var onClick = button.getAttribute('onclick')
.replace(/"fusion360:\/\/command=insert&file="\s*\+\s/, '')
.replace('encodeURIComponent(', '')
.replace(');', '');
button.setAttribute('onclick', onClick);
<button type='button' class="event btn btn-default btn-lg btn-block" onclick='window.location.href = "fusion360://command=insert&file=" + encodeURIComponent("https://assets.sas-automation.com/cad/SWM%203.stp");'
  data-category="Product Sidebar Right" data-action="Button Click" data-label="Opened CAD File in Fusion" aria-label="button">Open in Fusion360</button>
...