過去数日間私を悩ませてきたさらに別の質問。他の質問からわかるように、私はいくつかのマインドマップソフトウェアを作成しています。したがって(非常に単純化されています)、2つのdivがあります。1つはページ上の正方形で、もう1つはそのdiv内にあり、約10倍の大きさでドラッグ可能です。これは、オブジェクトを画面に配置してから、別のオブジェクトを追加するときに少し横に移動できるようにするためです。これを行うには、外側のdivをスクロール可能にします。
私が抱えている問題は、Javaスクリプトのマウスの位置に関係しています。div内の任意の場所でマウスの位置を取得すると、内側のdivを上下に半分のサイズでオフセットするため、正しくありません(したがって、ユーザーはキャンバスの中央を見て、好きなように移動できます) 。私は何十もの異なるマウス座標関数を試しましたが、どれも機能していないようです。私がウェブ上のどこかで見つけたクロスブラウザであると思われる例は次のとおりです。
function getMouse(e) {
var posx;
var posy;
if (!e) var e = window.event;
if (e.pageX || e.pageY) {
posx = e.pageX;
posy = e.pageY;
}
else if (e.clientX || e.clientY) {
posx = e.clientX + document.body.scrollLeft + document.getElementById("canvas").scrollLeft;
posy = e.clientY + document.body.scrollTop + document.getElementById("canvas").scrollTop;
}
} //getMouse
しかし、これでも機能しません。内側のdivがドラッグ可能であるため、エラーが発生していることはほぼ間違いありません。うまくいけば、説明しようとしてある程度意味がありますが、ここにない場合は、私が持っている状況を示すための非常に単純なjsfiddleです(ただし、ここではマウスクリックは行われていませんが、純粋にdiv構造を示しています)。私が作成している製品では、ユーザーがキャンバスをダブルクリックすると新しいオブジェクトが表示されるため、マウスの座標が正しい必要があります。
誰かが私を助けてくれることを願っています。
前もって感謝します。
編集:私のアプリケーションの一部でJQueryを使用しているため、JQueryを使用する場合と使用しない場合のどちらのソリューションでも問題ないことを言及できませんでした。再度、感謝します。