Skip to content

Instantly share code, notes, and snippets.

@awq
Created January 24, 2011 14:17
Show Gist options
  • Save awq/793273 to your computer and use it in GitHub Desktop.
Save awq/793273 to your computer and use it in GitHub Desktop.
Google検索結果でヒント表示したときに、検索ボックスにマッチする文字が常に一定になるようにする
set hintchars=hjklasdfgqwertyuopzxcbnm
js <<EOM
hints.extendedhinttags = options.get('extendedhinttags').value.replace(/\| \/\/xhtml:[^|]+/g, '');
hints.hintcharsOriginal = options.hintchars;
hints.hintcharsFilters = [];
hints.addHintcharsFilter = function(url, filter)
{
var i = 0, l = hints.hintcharsFilters.length;
while(i < l)
{
if(url.length > hints.hintcharsFilters[i].url.toString().length) break;
i++;
}
hints.hintcharsFilters.splice(i, 0,
{
url: RegExp(url), filter: filter,
});
};
hints.showOriginal = hints.show;
hints.show = function (minor, filter, win)
{
if(!hints.hintcharsFilters.some(
function(v)
{
if(v.url.test(content.location.href))
{
return options.hintchars = v.filter(hints.hintcharsOriginal);
}
}
))
{
options.hintchars = hints.hintcharsOriginal;
}
hints.showOriginal (minor, filter, win);
}
EOM
js <<EOM
hints.addHintcharsFilter(
'^http://[^/]+\\.google\\.co(?:m|\\.jp)/',
function(hintchars)
{
var elems = util.evaluateXPath(hints.extendedhinttags, false);
var q = util.evaluateXPath('//input[@name="q"]', false).snapshotItem(0);
var i = 1;
if(content.document.getElementsByTagName('iframe').length)
{
i--;
}
for each(elem in elems)
{
showText = false;
let computedStyle = content.document.defaultView.getComputedStyle(elem, null);
if (computedStyle.getPropertyValue("visibility") != "visible" || computedStyle.getPropertyValue("display") == "none")
{
continue;
}
if(elem == q || i == hintchars.length)
{
break;
}
i++;
}
hintchars = hintchars.replace('j', '');
return hintchars.slice(0, i) + 'j' + hintchars.slice(i);
}
);
EOM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment