「生徒向けワークシート」のアプレットに使われているオブジェクトの概要を取得するブックマーク
ブックマークレットによってJavaScriptを実行する方法(下記リンク先参照)により、「生徒向けワークシート」のアプレットに使われているオブジェクトの概要を取得する方法。
ブラウザのアドレスバーからJavaScriptのコードを実行する方法 (JavaScript疑似プロトコル)
ブックマークのURLには、下記をコピペする。
javascript:var thisApplet = window[document.getElementsByClassName("notranslate")[0].id];var beforeTag = document.getElementsByClassName("container")[0];var objList = thisApplet.getAllObjectNames();for (i = 0; i < objList.length; i++) {var objType = thisApplet.getObjectType(objList[i]);var objDef = thisApplet.getCommandString(objList[i],true);var objVal = thisApplet.getValueString(objList[i]);objList[i] = objType + '.' + objVal + ', definition: ' + objDef;} var stockList = '';for (var i=0;i<objList.length;i++){stockList += '<li>'+ objList[i] + '</li>';} beforeTag.insertAdjacentHTML('afterend','<div id="objprop">default</div>');document.getElementById("objprop").innerHTML = stockList;
動作例
関数版
pageX / Yの値とマウス位置
はじめに
GeoGebraアプレットの描画を行っているcanvas要素
document.getElementsByTagName('canvas')[0]
にイベントリスナーを追加した場合における、mouseevent.pageXおよびmouseevent.pageYの値は、当該イベント発生時のマウスの、グラフィックスビューの左上隅からのピクセル座標の値とは、必ずしも一致しない。
これは、グラフィックスビューの左上隅と、当該グラフィックスビューが描画されているページの左上隅とが一致しないこと(生徒向けワークシートのページでは一致しない)や、グラフィックスビューが拡大・縮小されて表示されていること(ページの大きさがグラフィックスビューの大きさより小さい場合や、iframeによる埋め込みを利用する場合に起こりうる)が原因である。
そこで、pageX / Yのズレを解消するにはどうすれば良いかを検証したので、検証結果のアプレットを下記に示す。
なお、event.offsetXYには、上記のようなズレは生じないが、これはタッチデバイスには使えないので、検証対象外とする。
検証結果のアプレット
「生徒向けワークシート」のページ:
https://www.geogebra.org/m/e7DXQ6Bp