“编辑 onclick url in”按钮

Edit onclick url in button

提问人:pball 提问时间:5/29/2018 更新时间:5/30/2018 访问量:620

问:

我正在尝试在按钮 onclick 事件中编辑 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>
JavaScript 按钮 onclick tampermonkey

评论

0赞 Calvin Nunes 5/29/2018
为了更好的维护和可读性,为什么不从内联中删除脚本并创建一个独立的函数来执行所需的操作?它将为您提供更多选择
1赞 pball 5/29/2018
我问题中的按钮代码是网站源代码的一部分,而不是我正在创建的东西。也许我没有解释得足够清楚,但我正在尝试使用 Tampermonkey 中的用户脚本修改网站上的链接。

答:

1赞 Alex 5/30/2018 #1

有很多方法可以实现这一点,我想到的是一种:

  1. 使用 getElementsByClassName(或任何其他选择器函数)抓取按钮
  2. 将属性值(文本类型)保存到变量onclick
  3. 找到给定的子字符串并将其替换为空字符串
  4. 将结果保存回按钮的属性。onclick

注意:您的解决方案有一个问题:为了在单击按钮时获得正确的重定向,您必须删除该方法,因为 url 似乎已经编码过。encodeURIComponent

你应该很高兴。你可以玩这个片段。

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>