2012-04-19 110 views
2

我有一个div充当左侧的侧栏,然后其余(右侧)是IFrame。 我的边栏宽度为50,我希望只要鼠标朝向它隐藏的右侧,然后当鼠标“进入< 50区域”时,边栏再次显示。iframe上的鼠标位置

这是可能的还是跨域访问存在问题?

+0

你会如何处理尝试在iframe的左边50px执行操作? – Bergi 2012-04-19 05:05:07

回答

1

我认为,如果我理解你的问题的权利,它不是捕获鼠标位置(基于pageX/pageY原则);但是相反,它只是简单地对mouseenter和mouseleave(悬停)进行操作。

您可以通过正确构建您的DOM来实现这些结果,然后以您想要的方式设计样式。不需要预测鼠标的位置,我们可以简单地决定何时显示以及何时隐藏内容。在这种情况下,我们使用您想要的50px,并基于用户的操作“显示/隐藏”。见工作的jsfiddle如下:

编辑

我选择使用.css(),而不是.animate()因为性能问题。如果你想调整它,让我知道。

http://jsfiddle.net/YGmN3/3/

+0

其实我想让IFrame伸展并填满整个屏幕(包括最左边的50px),而不只是隐藏边栏。通过隐藏我打算滑出。 – leonsas 2012-04-19 04:55:29

+0

够公平的。我会更新jsFiddle来做到这一点。 – Ohgodwhy 2012-04-19 05:08:12

+0

这基本上是我正在寻找。谢谢! – leonsas 2012-04-19 06:04:43

0

也许是这样的:

HTML

<div id="sidebar" style="float:left; width:50px; background-color:green; height:250px;"></div> 

JS

$("html").mousemove(function(event) 
{ 

    var xPos = event.pageX; 
    if (xPos <= 50) 
    { 
     $("#sidebar").show(); 
    } 
    else 
    { 
     $("#sidebar").hide(); 
    } 
});​ 

http://jsfiddle.net/5VEzx/

+1

此代码不处理IFrame,这正是导致问题检测鼠标位置的原因。 – leonsas 2012-04-19 04:56:14

0

肯定有,当你开始使用的I帧涉及并发症 - 这不起作用:

<Doctype! html> 

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <style> 
      body iframe { 
       margin-left: 100; 
       border: 2px solid red; 
      } 
     </style> 
     <script type="text/javascript" src="jquery.js"></script> 
     <script> 
      $(function(){ 
       $(document).on('mousemove', function(evt){ 
        $('#pagex').text(evt.pageX); 
       }); 
      }) 
     </script> 
    </head> 
    <body> 
     <div id="pagex"></div> 
     <iframe id="theframe"> 
      <div id="innepage"></div> 
     <script type="text/javascript"> 
       $(document).on('mousemove', function(evt){ 
         console.log(evt); 
        $('#innerpage').text(evt.pageX); 
       }); 
     </script> 
     </iframe> 
    </body> 
</html> 

其实,我是不是能够把一个mousemove听众随时随地那会在iframe内成功激发。

我知道iframes有他们自己的规则,但我也知道有可能与他们互动,因为人们一直都这样做。不幸的是实际上并没有与他们合作,所以我没有答案。