有时候软件安装程序会强制您在启用“我同意”框之前滚动到EULA的末尾。我怎样才能在网页上产生相同的效果?Javascript滚动到结尾
3
A
回答
5
<html>
<head>
<script type="text/javascript">
function setupPage() {
var agreement = document.getElementById("agreetext");
var visibleHeight = agreement.clientHeight;
var scrollableHeight = agreement.scrollHeight;
if (scrollableHeight > visibleHeight) {
var checkbox = document.getElementById("agreebox");
checkbox.checked=false;
checkbox.disabled=true;
agreement.onscroll = handleScroll;
}
}
function handleScroll() {
var agreement = document.getElementById("agreetext");
var visibleHeight = agreement.clientHeight;
var scrollableHeight = agreement.scrollHeight;
var position = agreement.scrollTop;
if (position + visibleHeight == scrollableHeight) {
document.getElementById("agreebox").disabled=false;
}
}
</script>
</head>
<body>
<form>
<textarea id="agreetext" rows="8" cols="40">Long agreement</textarea>
<br/><br/>
<input type="checkbox" id="agreebox" value="true"/> <label id="agreelabel" for="agreebox">I agree</label>
<br/><br/>
<input type="submit" value="Continue"/>
</form>
<script type="text/javascript">
// We put this at the end of the page rather than in an document.onload
// because the document.onload event doesn't fire until all images have loaded.
setupPage();
</script>
</body>
</html>
1
的代码出色的一点,如果你也想在标签中改变颜色旁边的复选框,只需修改代码如下:
function setupPage() {
var agreement = document.getElementById("agreetext");
var visibleHeight = agreement.clientHeight;
var scrollableHeight = agreement.scrollHeight;
if (scrollableHeight > visibleHeight) {
var checkbox = document.getElementById("agreebox");
checkbox.checked=false;
checkbox.disabled=true;
document.getElementById("agreelabel").style.color = "#777";
agreement.onscroll = handleScroll;
}
}
function handleScroll() {
var agreement = document.getElementById("agreetext");
var visibleHeight = agreement.clientHeight;
var scrollableHeight = agreement.scrollHeight;
var position = agreement.scrollTop;
if (position + visibleHeight == scrollableHeight) {
document.getElementById("agreebox").disabled=false;
document.getElementById("agreelabel").style.color = "black";
}
}
1
我用只读文本区域来显示我的许可协议。请注意,如果许可证协议文本不足以使textarea显示滚动条,则此代码将不起作用。
$(function() {
var serviceAgreementScrolled = false;
$('#service-agreement-textarea').scroll(
function() {
if (this.scrollTop + $(this).height() + 30 >= this.scrollHeight) {
serviceAgreementScrolled = true;
}
}
);
$('#accept-service-agreement-checkbox').change(
function() {
if ($(this).is(':checked') && !serviceAgreementScrolled) {
alert('Please scroll to read the rest of the service agreement.');
$(this).prop('checked', false);
}
}
);
});
<textarea id="service-agreement-textarea" readonly="readonly">Long long text here</textarea>
<label>
<input type="checkbox" id="accept-service-agreement-checkbox" />
I accept the terms of the service agreement
</label>
相关问题
- 1. Espresso:Recyclerview滚动到结尾
- 2. Espresso Recyclerview滚动到结尾
- 3. 如何滚动到System.Windows.Forms.WebBrowser的结尾?
- 4. Android:Seekbar不会一直滚动到结尾
- 5. 在列表结尾滚动到顶部
- 6. WordPress滚动抖动滚动到结尾时
- 7. fire(call)方法,当滚动查看器滚动到其结尾
- 8. 如何允许滚动NSTextView的结尾?
- 9. 在IDEA中滚动过去的结尾
- 10. 如何在到达页面结尾时滚动固定div 200px(滚动时)?
- 11. 自动滚动到NSTextView的末尾
- 12. 动态滚动到页面末尾
- 13. 的Javascript滚动到结果的底部滚动页面
- 14. 单行wpf文本框水平滚动到结尾
- 15. 确定文本框何时滚动到结尾
- 16. Android WebView:如何滚动到文档的结尾?
- 17. 在到达结尾之前使文本输入滚动
- 18. Listview在到达结尾后反向滚动?
- 19. 以编程方式滚动到屏幕结尾
- 20. 我如何让一个div滚动到其结尾,Y轴
- 21. 使用NetworkImageView滚动到列表结尾Volley
- 22. 获取SWT StyledText小部件始终滚动到其结尾
- 23. 如何知道网格视图是否滚动到结尾
- 24. 无法滚动到TreeView的结尾PyGTK/GTK
- 25. div滚动到JavaScript
- 26. 滚动到一行的末尾WPF TextBox
- 27. Windows Phone ListBox滚动到末尾
- 28. 滚动到UITextView的文本末尾
- 29. HorizontalScrollView,自动滚动以动画结尾
- 30. QListWidget自动移动到列表结尾
为什么你要这么做?没有冒犯,但这是最令人讨厌和无用的'功能'! – 2008-11-25 17:14:25