したがって、これで問題が解決する可能性は低いです.これを行う方法を知るのに十分な能力があり、実際に問題を評価するための実際のコードを投稿していないため、使用しているFacebook APIを正確に把握できません.
クリックイベントとiframeの幅などをキャプチャして、オフセットを比較することはできませんか? 何かのようなもの -
$("#social-container").click(function(e){
var facebookSelector = $( iframe selector here );
var iframeHeight = facebookSelector.height();
var iframeWidth = facebookSelector.width();
var winHeight = $(window).height();
var winWidth = $(window).width();
if ( e.clientY && e.clientX ){
//Set the top based on where mouse click occured
if ( e.clientY > (winHeight-iframeHeight) ){
facebookSelector[0].style.top = winHeight-iframeHeight + "px";
}
else {
facebookSelector.style.top = e.clientY + "px";
}
//Set the left based on where mouse click occured
if ( e.clientX > (winWidth-iframeWidth) ){
facebookSelector[0].style.left = winWidth-iframeWidth + "px";
}
else {
facebookSelector[0].style.left = e.clientX + "px";
}
}
}
上記の例は冗長ではありません-
$("#social-container").click(function(e){
var facebookSelector = $( iframe selector here );
var h = $(window).height() - facebookSelector.height();
var w = $(window).width() - facebookSelector.width();
if ( e.clientY && e.clientX ){
//Set the top based on where mouse click occured
facebookSelector[0].style.top = ( e.clientY > h ) ? h + "px" : e.clientY + "px";
//Set the left based on where mouse click occured
facebookSelector[0].style.left = ( e.clientX > w ) ? winWidth-iframeWidth + "px" : e.clientX + "px";
}
}
クリック位置の代わりに facebook のようなボタンの位置を使用することもできます (または、本当に必要なものは何でも)。
警告と補遺:
1. iframe (または何でも) の ID が facebook によって動的に生成されていて、それを制御
できない場合、これはそれほど簡単には機能しません。 2. [いいね!] ボタンがiframe で、イベントがコンテナーにバブリングするのを防ぎます。
3. この例では、現在 jQuery が必要です。
4.あなたのiframe(または何でも)は、position: absolute
またはposition: fixed