人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

GreaseMonkeyに関する質問です。

mixi版ブラウザ三国志を遊んでいます。
出兵画面の「次へ」ボタンが武将一覧の下にあり、スクロールするのが面倒です。

そこで、GreaseMonkeyで以下のようなスクリプトを記述してみました。

// ==UserScript==
// 省略
// @include http://*.3gokushi.jp/facility/castle_send*
// ==/UserScript==

(function(){
if(location.pathname.indexOf("facility/castle_send_troop.php") >= 0){
AddShutsugekiLink();
} else {
//GM_log(document.getElementsByTagName('html')[0].innerHTML, 0);
}
})();

function AddShutsugekiLink() {
var elem = document.getElementById("statMenu");
var lnk = document.createElement("a");
lnk.title = "shutsugeki";
lnk.href = "javascript:void(0);";
lnk.style.margin = "3px";
lnk.innerHTML = "shutsugeki";
lnk.addEventListener("click", function() {document.getElementsByName('input_troop').item(0).submit();}, true);
var lstItm = document.createElement("li");
lstItm.setAttribute("class", "last");
lstItm.appendChild(lnk);
elem.appendChild(lstItm);
}

ボタンのsubmit()を呼んでいるだけですが、どうにもうまく動かず、同じ画面に戻ってきてしまいます。
どのように修正するとうまく動くのか、アドバイスをお願いします。

●質問者: かえる
●カテゴリ:インターネット ゲーム
✍キーワード:.jp Class Click Greasemonkey href
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Cherenkov
●100ポイント ベストアンサー

試行錯誤してみたところ正常な動作をする条件は、form[name="input_troop"]の中のinput[name="btn_preview"]からのsubmitのようです。

(function(){
 if(location.pathname.indexOf("facility/castle_send_troop.php") >= 0){
 var menu = document.getElementById("statMenu");
 var p = document.querySelector('[name="btn_preview"]');

 var btn = p.cloneNode(true);
 btn.value = "出撃";
 btn.style.position = "absolute";
 btn.style.top = (menu.offsetTop-5) + "px";
 btn.style.left = (menu.offsetWidth-50) + "px";
 p.form.appendChild(btn)
 }
})();

一応説明しておくと、

(formをよくわかっていない。サーバ側でname属性チェックは常識なのかも)

◎質問者からの返答

ありがとうございます。

ボタンでサブミットなんですね。

サブミットは必ずフォームからという思い込みがありました。

まだまだJavaScriptは不勉強です。

見た目をボタンにしていただき、ありがとうございます。

ボタンだと、かっこいいですね。

querySelectorとか、cloneNodeとか、メソッドの勉強にもなりました。

早速試してみたいと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ