我正在尝试检测元素何时进入视图,以便我可以将其淡入。我觉得我可以检测到它在页面上的垂直位置,并在滚动值接近它时将其淡入。
我遇到的问题是document.height总是远大于每个页面上document.scrollTop()+ window.height()的值。此外,金额每次都是可变的(我认为这可能是一个问题,因为导航助手会隐藏桌面菜单并插入一个"汉堡"菜单,但更改量会因页面而异。)
因此:
document.body.scrollHeight - $(window).height() == $('body').scrollTop();
在控制台日志中返回false。
有没有人碰到过这个?我完全感到困惑。所有浮动元素都被清除。没有添加元素/节点,也没有添加动态内容的AJAX。
如果有人有任何关于可能导致这种情况的理论,请提前致谢。
答案 0 :(得分:1)
const UInt32 WM_KEYDOWN = 0x0100;
[DllImport("user32.dll")]
static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
public Form1()
{
InitializeComponent();
}
// Sends F5 to Tibia
private void button1_Click(object sender, EventArgs e)
{
Process[] processes = Process.GetProcessesByName("Tibia");
foreach (Process proc in processes)
{
PostMessage(proc.MainWindowHandle, WM_KEYDOWN, (int)System.Windows.Forms.Keys.F5, 0);
}
}
是整个身体标签的高度。 document.height
是浏览器窗口的高度。条件的左侧从最终计算的高度中减去视口。这并不意味着它等于文档的滚动位置。
$(window).height()
相反,请尝试查找+ - - - - - - + + - - - - - - + + - - - - - - +
: : : : : Scroll Top :
: : : : : 4 lines :
+=============+ : : + - - - - - - +
| window | : :
| height | : document :
| 5 lines | : height :
+=============+ : - window :
: : : height :
: : : ________ :
: document : : 13 lines :
: height : : :
: (offscreen) : : :
: 18 lines : + - - - - - - +
: :
: :
: :
+ - - - - - - +
13lines != 4lines
以获取窗口下方的事物的起始位置。