JavaScriptのブックマークレットを使用しています。基本的に私は数百ページのトレーニング資料を通し、すべてがHelveticaからArialに正しくスワップされていることを確認しています。ブックマークレットのコードは以下の通りですが、mousemoveイベントリスナと絶対的に配置された小さなdivが作成されます。 mousemoveイベントでは、divは新しいマウス位置(10pxずつ右下にオフセット)に移動し、elementFromPointでマウスの下の要素を取得し、その要素のfont-familyプロパティを表示します。ああ、それはArialがプロパティ内に表示されるかどうかに基づいてそれは背景色を変更します。elementFromPointはページをスクロールした後にnullを返します
var bodyEl=document.getElementsByTagName("body")[0];
var displayDiv=document.createElement("div");
displayDiv.style.position="absolute";
displayDiv.style.top="0px";
displayDiv.style.top="0px";
bodyEl.appendChild(displayDiv);
function getStyle(el,styleProp) {
var camelize = function (str) {
return str.replace(/\-(\w)/g, function(str, letter){
return letter.toUpperCase();
});
};
if (el.currentStyle) {
return el.currentStyle[camelize(styleProp)];
} else if (document.defaultView && document.defaultView.getComputedStyle) {
return document.defaultView.getComputedStyle(el,null)
.getPropertyValue(styleProp);
} else {
return el.style[camelize(styleProp)];
}
}
function getTheElement(x,y) {return document.elementFromPoint(x,y);}
fn_displayFont=function displayFont(e) {
e = e || window.event;
var divX=e.pageX+10;
var divY=e.pageY+10;
var font=getStyle(getTheElement(e.pageX,e.pageY),"font-family");
if (font.toLowerCase().indexOf("arial") != -1) {
displayDiv.style.backgroundColor = "green";
} else {
displayDiv.style.backgroundColor = "red";
}
displayDiv.style.top= divY.toString() + "px";
displayDiv.style.left= divX.toString() + "px";
displayDiv.style.fontFamily=font;
displayDiv.innerHTML=font;
}
window.addEventListener('mousemove', fn_displayFont);
document.onkeydown = function(evt) {
evt = evt || window.event;
if (evt.keyCode == 27) {
window.removeEventListener('mousemove', fn_displayFont);
bodyEl.removeChild(displayDiv);
}
};
(記録のために、私はここにSOの答えからコードを決定するスタイルを盗んだが、私は長くないの後にタブを失ったおかげで、匿名のインターネット男。!) だから、これはすべてが素晴らしい作品 - I UNTIL上から下にスクロールされたページの一部の上にマウスを置くようにしてください。私は画面の一番下にマウスを置いて、ページの上部にスクロールしていて、遠くまでスクロールすると、e.pageXが定義されていないことをログに記録します。
アイデア?
こんにちはクラーク、元々の解決策に努力してくれてありがとう。残念ながら、この場合、私にとってはうまくいかないでしょう。もともと各ノードをループしてチェックしていましたが(jQueryではなく、実際にはまだ学んでいませんが、ちょっと)、コーディングを開始したときに、 Arialでなければならない "というルールは、私がそれから得たアウトプットを、ほとんど役に立たないようにするつもりでした。私は、各ノードが例外であるかどうかを調べなければなりません。私は体の上でそれを掃除することができますmousemoveの方法。 –
どの要素が「Arial be Arial」ルールに違反しているのかを調べようとしている場合は、共通の親に対してarialNodesのリストをフィルタリングできます。私の答えを更新させてください。 –
私はarialではない要素を見つけようとしていますが、ページの左と上にあるすべてのメニューはルールの例外です - Arialでは読みにくくなります。同様に、divがコンテンツの真ん中にあり、それが引用を表している場所があります - これらはArialではありません。 Arialにするべきではない30の異なる状況がありますが、クラス/ IDが一様ではないので、プログラム的に決定するのは難しいでしょう。視覚的には、わかりやすく、マウスを使用するのが最良の方法のように思える理由です。 –