簡體   English   中英

你如何編輯HTML <select>與Greasemonkey的元素?

[英]How do you edit an HTML <select> element with Greasemonkey?

有一個口袋妖怪戰斗模擬器稱為“口袋妖怪攤牌”。 客戶端是封閉源代碼,因此我無法在服務器上添加層。 我想編輯最后的戰斗下拉列表來添加一個等級。

我想改變:

<select id="lobby-format" onchange="return rooms['lobby'].formSelectFormat()">
  <option value="randombattle" selected="selected">Random Battle (rated)</option>
  <option value="unratedrandombattle">Unrated Random Battle</option>
  <option value="ou">OU (rated)</option>
  <option value="cap">CAP (rated)</option>
  <option value="ubers">Ubers (rated)</option>
  <option value="uu">UU (rated)</option>
  <option value="ru">RU (rated)</option>
  <option value="nu">NU (rated)</option>
  <option value="lc">LC (rated)</option>
  <option value="hackmons">Hackmons (rated)</option>
  <option value="balancedhackmons">Balanced Hackmons (rated)</option>
  <option value="glitchmons">Glitchmons (rated)</option>
</select>

至:

<select id="lobby-format" onchange="return rooms['lobby'].formSelectFormat()">
  <option value="randombattle" selected="selected">Random Battle (rated) </option>
  <option value="unratedrandombattle">Unrated Random Battle</option>
  <option value="ou">OU (rated)</option>
  <option value="cap">CAP (rated)</option>
  <option value="ubers">Ubers (rated)</option>
  <option value="uu">UU (rated)</option>
  <option value="ru">RU (rated)</option>
  <option value="nu">NU (rated)</option>
  <option value="pu">PU (unrated)</option>
  <option value="lc">LC (rated)</option>
  <option value="bwcup">BW Cup (unrated)</option>
  <option value="hackmons">Hackmons (rated)</option>
  <option value="balancedhackmons">Balanced Hackmons (rated)</option>
  <option value="glitchmons">Glitchmons (rated)</option>
</select>

(在選定位置插入2個<options> 。)

好的,試試看:

var opt = document.createElement("option");

var content = document.createTextNode("PU (unrated)");
opt.appendChild(content);

var attr = document.createAttribute("value");
attr.nodeValue = "pu";
opt.setAttributeNode(attr);

var targetEl = document.getElementById("lobby-format");
targetEl.appendChild(opt);

這將只增加一個選項,但我想你明白了。

這是一個腳本,它使用jQuery的強大功能( 在jsBin上測試)在目標點添加選項:

// ==UserScript==
// @name     _Add new options at select points
// @include  http://play.pokemonshowdown.com/*
// @include  http://jsbin.com/azeveh*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// ==/UserScript==

var selectNode  = $("#lobby-format");

selectNode  .find ("option[value='nu']")
            .after ('<option value="pu">PU (unrated)</option>');

selectNode  .find ("option[value='lc']")
            .after ('<option value="bwcup">BW Cup (unrated)</option>');


OP的特定站點使用AJAX添加<select> 要補償AJAX,請使用waitForKeyElements實用程序。 像這樣:

// ==UserScript==
// @name        _Add new options at select points, AJAX compensated.
// @include     http://jsbin.com/azeveh*
// @include     http://play.pokemonshowdown.com/*
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require     https://gist.github.com/raw/2625891/waitForKeyElements.js
// ==/UserScript==

waitForKeyElements ("#lobby-format option[value='nu']", AddOption_1);
waitForKeyElements ("#lobby-format option[value='lc']", AddOption_2);

function AddOption_1 (jNode) {
    jNode.after ('<option value="pu">PU (unrated)</option>');
}

function AddOption_2 (jNode) {
    jNode.after ('<option value="bwcup">BW Cup (unrated)</option>');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM