我在页面上有一堆按钮要在新标签页中打开,因为我正在拨号,我讨厌必须按下后退按钮并等待页面再次加载才能点击下一个按钮。
按钮代码如下所示:
<button onclick="window.location.href='?act=stock&i=273';return false;" class="wide">Stock in Shop</button>
<button onclick="window.location.href='?act=stock&i=287';return false;" class="wide">Stock in Shop</button>
<button onclick="window.location.href='?act=stock&i=193';return false;" class="wide">Stock in Shop</button>
我认为我需要将window.location.href
更改为window.open()
并将网址更改为http://www.felisfire.com/possessions?
然后添加原始onclick中的href部分...但我不知道如何去寻找这个并且搜索3个小时寻找答案并没有帮助...
请!如何使用Greasemonkey更改这些按钮?
到目前为止可能的代码,但我认为它不起作用:
var buttons = document.getElementsByClassName('wide');
for (var i = 0; i < buttons.length; i++) {
buttons[i]=button.onclick="window.open('http://www.felisfire.com/possessions + *how do I get the part I need from the original onclick?*');">Stock in Shop</button>
}
答案 0 :(得分:1)
使用用户的onclick
时要小心;看看Greasemonkey的陷阱。
使用jQuery或querySelectorAll
获取按钮,然后使用jQuery或addEventListener
设置新的点击处理程序。
以下从旧的onclick中提取密钥位,将其存储在数据属性中,并用web 2.0处理程序替换onclick:
var stockBtns = document.querySelectorAll ("button.wide[onclick*='window']");
for (var J = stockBtns.length - 1; J >= 0; --J) {
var oldClick = stockBtns[J].getAttribute ("onclick");
var payloadMtch = oldClick.match (/(act=.+?)';return/);
if (payloadMtch && payloadMtch.length > 1) {
var payload = payloadMtch[1];
//-- Don't use onclick!
stockBtns[J].removeAttribute ("onclick");
//-- Store payload value.
stockBtns[J].setAttribute ("data-destQry", payload);
//-- Activate click the proper way, especially for userscripts
stockBtns[J].addEventListener ("click", openNewTab, false);
}
}
function openNewTab (zEvent) {
var baseURL = "http://www.felisfire.com/possessions"
/* Or be smart and use:
var baseURL = location.protocol + "//"
+ location.host
+ location.pathname
;
*/
window.open (baseURL + "?" + zEvent.target.getAttribute ("data-destQry") );
return false;
}
答案 1 :(得分:0)
你可以这样做:
<button onClick="window.open('*my-url*');">Stock in Shop</button>
无法强制使用新标签 - 浏览器会尊重用户设置是创建新标签页还是新窗口。
我为你创建了一个JavaScript小提琴,这样你就可以看到它有多简单:
祝你好运!