opera:hige このページをアンテナに追加

 | 

2006-04-12

[]operaプロトコルをごにょごにょ 04:15 operaプロトコルをごにょごにょ - opera:hige を含むブックマーク はてなブックマーク - operaプロトコルをごにょごにょ - opera:hige

設定を解説する際に非常に便利なopera:config。リンクを張れば直に設定項目が現れてしまいますからね。Operaユーザーの強い味方である事は確かです。

しかしOperaユーザー以外にとって、これは邪魔な事この上ないリンク。Operaユーザーの占める割合を考えると全体のUsabilityを下げているのは間違いないでしょう。……というわけで、operaプロトコルへのリンクをOperaブラウザ以外で無効化する為の管理者用JavaScriptを作ると良いんじゃないかな、と思うのです。

operaプロトコル

てことで早速作ってみたよ。

opera:config test page

このページを,operaでアクセスしたときとIE,Firefoxでアクセスしてみたときとを比べてみてください。たぶん、opera:configとUse Thumbnails in Tab Tooltipsという文字がFirefox,IEだとリンクにならないはず。

ページに埋め込んであるスクリプトは、

window.onload = function () {
	if(!window.opera) {
		if(document.body)
			searchKeyword(document.getElementsByTagName('body')[0]);
	}
}
function searchKeyword(n){
	if(n.nodeType == 1 && n.tagName.toUpperCase() == 'A' && (n.href.match(/^opera:/))) {
		var r = document.createElement('SPAN');
		r.className = 'opera_config';
		for(var j = 0; j < n.childNodes.length; j++)
			r.appendChild(n.childNodes[j].cloneNode(true));
		n.parentNode.replaceChild(r, n);
	} else if(n.hasChildNodes()) {
		for(var i = 0; i < n.childNodes.length; i++)
			searchKeyword(n.childNodes[i]);
	}
	return;
}

。大部分がtemp_hさんが作られた,disableHatenaKey.jsで出来ています。Thanks, temp_h.

ついでにopera:で始まるリンクを全て無効に。対象となるのは、opera:/button,opera:/edit/Searchなど。


んーあとはユーザーエージェントの部分だな。これだとMark as {Mozilla,IE}だとリンクにならないからね。どうにかできるのかな。


追記 4/13 0:25

ユーザーエージェントで判断じゃなくて、window.operaで判断するのに変更。

で、もっとシンプルなスクリプトでいけるということなので

window.onload = function () {
	if(!window.opera) {
		if(document.body)
			removeHref();
	}
}
function removeHref(){
	var anc = document.getElementsByTagName('a');
	for(var i=0;i<anc.length;i++) {
		if(anc[i].href.match(/^opera:/i)) {
			anc[i].removeAttribute('href');
		}
	}
}

こっちを使うことにする。

Thanks, usopion, Kuruma and takef

takeftakef2006/04/13 00:02ユーザーエージェントで判別せずにwindow.operaの有無を調べるようにしたらどうでしょう?

higeorangehigeorange2006/04/13 00:10今、それをIRCで教えてもらったところです。書き直しときます。ありがとうございます。

nanashinanashi2006/04/14 10:22Firefoxの拡張NoScript等でスクリプトがoffの場合、OperaとFirefoxで同じ表示になります。

higeorangehigeorange2006/04/14 15:37書き忘れていましたが、javascriptで書かれているのでjavascriptオフにした場合動きません

nanashinanashi2006/04/14 17:02opera:config test pageに書いてあるスクリプトだとa要素が残ってしまい、ユーザースタイルでa要素に表示の設定をしてある場合、「リンクはあるけどどうなってんの?どこにも飛ばないよ。」という状態になり、閲覧者が混乱すると思います。
span要素で置き換えたほうが、リンクがなくなって閲覧者の混乱はさけられると思います。

higeorangehigeorange2006/04/14 22:26hrefを取り除いただけの状態だと、ユーザースタイルを適用しない限りリンクとして表示されないと思いますのでこのままで大丈夫だと思います。

トラックバック - http://orera.g.hatena.ne.jp/higeorange/20060412
 |