2011-08-01 17 views
0

IFRAME内にIFRAMEがあり、getMousePositionメソッドがiframe内の現在のマウス位置を取得できません。最初のIframeで動作しますが、親ドキュメントの関数からgetMousePositionを呼び出すと、フォールバック値600 & 350が返されます。FYI:IFrameのコンテンツを生成する際には制御できませんが、そうではありませんクロスドメインアクセス。 IFRAMESと親文書は同じサーバー上でホストされます。私はInternet Explorer 8のみをプログラミングしているので、ブラウザの互換性は問題ではありません。IFRAMEの現在のマウス位置を特定しますか?

function getMousePosition(){ 
    if(!inframe) 
     $(document).mousemove(function(e){ 
      mouseX = e.pageX 
      mouseY = e.pageY 
     }); 
    else 
    { 
    mouseX = 600; 
    mouseY = 350; 
    } 

    //This is where I get the Iframe Document (I then parse through the document, picking up the specific links and storing them in the array verifiedlinks) 
    var src = window.frames[iframeindex].document.getElementsByTagName("a"); 
    // This is where I call my function which uses the values returned by getMousePosition (verifiedlinks is an array of links inside the iframe): 

    verifiedlinks[i].onmouseover = function() 
    { 
     showPeopleDetails(this.getAttribute('username')); 
    } 
    // This should display User Details at the current Mousecoordinates 
function showPeopleDetails(UserId){ 
var vpd = document.getElementById("PeopleDetails"); 
    if (vpd != null) { 
     getMousePosition(); 
     vpd.style.left=mouseX+10; //mouseX and mouseY are defined globally 
     vpd.style.top=mouseY+10; 
     vpd.style.display="block"; 
    } 
} 

私はこの質問を読んでいます:SOLVED QUESTIONしかし、答えは私の問題を解決しませんでした。 私はこれを見つけましたquestion答えのどれも私のために働いているようです。 私の新しい編集したコード:あなたが親ウィンドウからgetMousePositionを呼び出す場合

function showPeopleDetails(UserId, x, y){ 
var vpd = document.getElementById("PeopleDetails"); 
try 
{ 
    if (vpd != null) { 
     //getMousePosition(); 
     //alert("MouseX: " +mouseX+" MouseY: "+mouseY); 
     //vpd.style.left=mouseX+10; 
     //vpd.style.top=mouseY+10; 
     vpd.style.left = x +10 - window.frames[2].document.body.scrollLeft; 
     vpd.style.top = y +10 - window.frames[2].document.body.scrollTop; 
    } 
} 

答えて

1

その文書には、親ウィンドウのドキュメントを指します。 iframeのコンテキストでこのメソッドを呼び出す必要があります。また、どこのフレームが定義されていて、どのイベントでもその値を更新しますか?

jqueryを使用すると、mouseoverイベントをリンクしてリンクできます。これを使用すると、ドキュメントに対するリンクのマウスx/y座標を提供するイベントオブジェクトが取得されます。それがあなたを助けることを願っています。

$(verifiedlinks[i]).mouseover(function(e){ 
     showPeopleDetails($(this).attr('username'), e.pageX, e.pageY); 
} 

function showPeopleDetailsNow(UserId, x, y){ 
var vpd = document.getElementById("PeopleDetails"); 
    if (vpd != null) { 
     getMousePosition(); 
     //vpd.style.left=mouseX+10; //mouseX and mouseY are defined globally 
     //vpd.style.top=mouseY+10; 
     vpd.style.left= x +10 + $(document).scrollTop(); //mouseX and mouseY are defined globally 
     vpd.style.top= y +10; 
     vpd.style.display="block"; 
    } 
} 
+0

はいiframeを解析するたびに、INFRAMEをtrueに更新します。ユーザーが特定のリンク上を移動するときにballoontooltipをポップアップしたい – Abhischek

+0

親ウィンドウではなく、iframe内でリンクするためにマウスオーバーイベントを直接添付する必要があります。あなたがしようとしている方法はうまくいきません。 – ShankarSangoli

+0

申し訳ありませんが、IFrame内のリンクを変更していて、リンクが正しく動作していますが、balloontooltipが間違った座標に表示されます。iframe内のリンクにカーソルを合わせると、バルーンは常に600px、350pxで表示されます。そこで私は、私のgetMousePositionがIFRAME内の値を更新していないと仮定しました。 – Abhischek

関連する問題