opera10.* のspatial navigation不具合

Forums » Web 全般 » Web ページの閲覧に関する問題解決

You need to be logged in to post in the forums. If you do not have an account, please sign up first.

Go to last post

3. April 2010, 06:47:33

zanku

Posts: 5

opera10.* のspatial navigation不具合

18禁サイトであることをお断りしておいて、と

ttp://mylover.jerog.com/list.php

上記のサイトでwinXPにて、opera10.* になってからspatial navigationが意図からかけ離れすぎた動きをします。
9.* まではほぼ完全に意図に沿う動きをするのに…




3. April 2010, 18:21:08

edvakf

Posts: 762

うちは Mac ですが、まあ許容範囲かなという程度にはおかしかったです。たまに上に行くべきところが右に行ったり。
「かけ離れすぎ」というのがどの程度なのかよくわかりませんでした。

不思議ですね。ソースを見ても別に変なことしてるわけではないようですし。

4. April 2010, 10:19:17

zanku

Posts: 5

早速試していただき、心強いです。

>「上に行くべきところが右に行ったり。」

そうなんですよ。で、その頻度ですが、
9.64だと、限りなく100パーセントに近く押した矢印キー通りの方向に動いてくれますが、10.51ですと、50パーセントを切ります。
旧バージョンに慣れた私からは、今の丁半ばくちは「かけ離れすぎ」と感じてしまいます。

4. April 2010, 16:48:55

edvakf

Posts: 762

そうですか。Mac では、10回に1回程度でした。Windows 版と違うのはどういうわけなのか分かりませんが、そのサイトでしか発生しないならまあ放っておくしかないでしょう。そこ限定なら UserJS で強制的に行きたい方向に行かせることも出来なくはないですが、未知のサイトにまで対応するのは不可能ですし。

5. April 2010, 09:54:58

zanku

Posts: 5

>UserJS で強制的に行きたい方向に行かせることも出来なくはない

そんなことができるんですね。ありがとうございます。
profileフォルダの中のBrowser.jsから使えそうなところをさがしてきてuser.jsとして書き換えてみようと思ったのですが、
//Browser.jsから引用
/**if(hostname.indexOf('mail.yahoo')>-1){			// DSK-263826, Keyboard navigation of autocomplete menu fails
**opera.addEventListener('BeforeEvent.keypress', function(e){
**				if( e.event.keyCode>36 && e.event.keyCode<41 ){
**					e.event.charCode=0;
**				}
**			}, false);
**				if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Keyboard navigation of autocomplete menu fails). See browser.js for details');
**		}
**/

//書き換えかけ
if(hostname.indexOf('mylover.jerog.com/list.php')>-1){                                                     //should remove "list.php"?
			opera.addEventListener('BeforeEvent.keypress', function(e){
				if(e.event.keyCode==37&&e.event.shiftKey){                      //shift+left
					hogehoge_to_left_link;                                         //want the cursor to move left, but...
				}
				if(e.event.keyCode==38e.event.shiftKey){                           //shift+up
					hogehoge_to_upper_link;                                      //want the cursor to move up, but...
				}
				if(e.event.keyCode==39&&e.event.shiftKey){                       //shift+right
					hogehoge_to_right_link;                                        //want the cursor to move right, but...
				}
				if(e.event.keyCode==40&&e.event.shiftKey){                       //shift+down
					hogehoge_to_down_link;                                       //want the cursor to move down, but...
				}
			}, false);
				if(self==top)postError.call(opera, 'Opera has modified the JavaScript on '+hostname+' (Keyboard navigation of autocomplete menu fails). See browser.js for details');
		}

肝心のキー操作にあわせて移動するべき水色のカーソルの呼び出し方が分かりません。どうやったらいいですか?
javascriptも勉強してみようと思います。

5. April 2010, 17:57:21

edvakf

Posts: 762

フォーカスしたい要素に適当な id を付けて nav-right: とかいう CSS ルールを作ればいいのです。
http://d.hatena.ne.jp/edvakf/20081204/1228414453

上のように作るなら必要ないと思いますが、document.moveFocusUp() とかいう Opera だけの関数もあります。
http://d.hatena.ne.jp/edvakf/20081208/1228690865

6. April 2010, 09:22:01

zanku

Posts: 5

紹介していただいたedvakfさんのブログを拝見して、
カタログの画像リンクの並びを配列と考えて、空間ナビゲーションと一致するように
nav-rightやdocument.moveFocusUp()で該当する要素に飛ぶように作ればいいのかな、
と考えるようになりました。
spacnav-highlight.jsの内容や、cssとjavascriptとの関係などをよく勉強しながら、作っていきたいと思います。

ひとまず、貴重なアドバイスにお礼申し上げます。ありがとうございました。

14. April 2010, 04:03:48

edvakf

Posts: 762

moveFocusUp のことはひとまず忘れてください。

とりあえず移動したい全部の要素に ID を振って、ある要素の上下左右の要素の ID を nav-right などで指定したら Opera の空間ナビゲーションがそれを見て動いてくれるようになります。

Forums » Web 全般 » Web ページの閲覧に関する問題解決