window.onload = function () {
// 获取参数
function GetQueryValue1(queryName) {
var reg = new RegExp("(^|&)" + queryName + "=([^&]*)(&|$)", "i")
var r = window.location.search.substr(1).match(reg)
if (r != null) {
return decodeURI(r[2])
背景: js实现滚动条一直在底部靠的是元素的scrollTop和scrollHeight来实现的,可是在React中有些行不通。
原理: 在容器的底部添加一个空的div,使该div一直处于浏览器视口内,这样就可以让容器的滚动条位于底部。
知识点:
useState: 通过在函数组件里调用它来给组件添加一些内部 state, useState 唯一的参数就是初始 state
useEffect: 给函数组件增加了操作副作用的能力,它跟 class 组件中的 componentDidMount、componentDidUpdate 和 componentWillUnmount 具有相同的用途,只不过被合并成了一个 API。
useRef: 返回一个可变的 ref 对象,其 .current 属性被初始化为传入的参数(initialValue)。返回的 ref 对象在组件的整个生命周期内保持不变。
Element.scrollIntoView() : 让当前的元素滚动到浏览器窗口的可视区域内。
方案一:用hooks实现
方案二:用类组件实现
个人推荐第一种方案,第二种方案可行但是操作DOM性能一般。
三种控制DIV内容滚动的方法:方法一:
使用锚标记要滚动到的位置,然后通过click方法模拟点击滚动到锚所在位置
<script language="javascript1.2" type="text/javascript">
function onGetMessage(context)
{
msg.innerHTML+=context
msg_end.click()
}
</script>
<div style="width:500pxoverflow:auto">
<div id="msg" style="overflow:hiddenwidth:480px"></div>
<div><a id="msg_end" name="1" href="#1">&nbsp</a></div>
</div>
方法二:
利用DIV的scrollIntoView方法,将最底端滚动到可视位置 [list=1]<script
language="javascript1.2"
type="text/javascript">
function onGetMessage(context)
{
msg.innerHTML+=context
msg_end.scrollIntoView()
}
</script>
<div style="width:500pxoverflow:auto">
<div id="msg" style="overflow:hiddenwidth:480px"></div>
<div id="msg_end" style="height:0pxoverflow:hidden"></div>
</div>
方法三:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/htmlcharset=utf-8" />
<meta name="keywords" content="滚动条, scrollbar, 页面底部, 聊天窗口, " />
<meta name="description" content="有些时候(如开发聊天程序),我们需要将将滚动条(scrollbar)保持在最底部,比如聊天窗口,最新发出和收到的信息要显示在最下方,如果要看到最下方的内容,就必须保证滚动条保持在最底部。" />
<title>将滚动条(scrollbar)保持在最底部的方法 - 滚动条, scrollbar, 页面底部, 聊天窗口, </title>
</head>
<body>
<div id="example">
<h3 id="example_title">将滚动条(scrollbar)保持在最底部的方法</h3>
<div id="example_main">
<!--************************************* 实例代码开始 *************************************-->
<script type="text/javascript">
function add()
{
var now = new Date()
var div = document.getElementById('scrolldIV')
div.innerHTML = div.innerHTML + 'time_' + now.getTime() + '<br />'
div.scrollTop = div.scrollHeight
}
</script>
<span class="notice">请点击“插入一行”按钮,插入最新信息,当出现滚动条时,滚动条将自动保持在底部。</span><br />
<div id="scrolldIV" style="overflow:autoheight: 100pxwidth: 400pxborder: 1px solid #999">
</div>
<input type="button" value="插入一行" onclick="add()">
<!--************************************* 实例代码结束 *************************************-->
</div>
</div>
</body>
</html>