JS 判断当前页面是否获取了焦点
时间: 2024-10-08 20:12:49 浏览: 64
在JavaScript中,你可以通过事件监听和元素属性来判断当前页面是否获得了焦点。以下是几种常用的方法:
1. **document.activeElement**:这个全局变量返回的就是当前活动的DOM元素,如果它有焦点,则表示页面已经获得焦点。
```javascript
if (document.hasFocus() || document.activeElement) {
console.log('页面有焦点');
} else {
console.log('页面未获得焦点');
}
```
请注意,`document.hasFocus()`方法在现代浏览器中可用,但在一些旧版本或非标准浏览器中可能不支持。
2. **窗口事件**:可以监听窗口的`focus`和`blur`事件,当事件触发时,说明页面的焦点状态发生了变化。
```javascript
window.addEventListener('focus', function() {
console.log('页面获得了焦点');
});
window.addEventListener('blur', function() {
console.log('页面失去了焦点');
});
```
相关问题
输入密码跳转页面(页面加载完成后第一个文本框获取焦点,点击数字为文本框赋值,点击C清空所有文本框内容,点击X删除前一个文本框内容。6个文本框均有数字后判断密码,密码正确跳转至百度页面,错误刷新当前页面)
很抱歉,我是一个语言模型,无法为您提供实时交互式的代码演示。但是,我可以给您提供一个大体的思路:
1. 创建页面布局,包括6个文本框和数字键盘。
2. 给数字键盘上的数字和清空按钮添加点击事件,分别对应输入数字和清空所有文本框内容操作。
3. 给删除按钮添加点击事件,删除前一个文本框内容。
4. 给6个文本框添加输入事件,当输入框达到6个数字时,判断密码是否正确。
5. 如果密码正确,跳转至百度页面;如果密码错误,刷新当前页面。
下面是一个简单的代码实现,供您参考:
HTML部分:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>输入密码跳转页面</title>
</head>
<body>
<h2>请输入密码</h2>
<form id="password-form">
<input type="text" id="input1" maxlength="1" readonly>
<input type="text" id="input2" maxlength="1" readonly>
<input type="text" id="input3" maxlength="1" readonly>
<input type="text" id="input4" maxlength="1" readonly>
<input type="text" id="input5" maxlength="1" readonly>
<input type="text" id="input6" maxlength="1" readonly>
</form>
<div id="keypad">
<button onclick="inputNumber(1)">1</button>
<button onclick="inputNumber(2)">2</button>
<button onclick="inputNumber(3)">3</button>
<br>
<button onclick="inputNumber(4)">4</button>
<button onclick="inputNumber(5)">5</button>
<button onclick="inputNumber(6)">6</button>
<br>
<button onclick="inputNumber(7)">7</button>
<button onclick="inputNumber(8)">8</button>
<button onclick="inputNumber(9)">9</button>
<br>
<button onclick="clearAll()">C</button>
<button onclick="inputNumber(0)">0</button>
<button onclick="deleteInput()">X</button>
</div>
</body>
</html>
```
JavaScript部分:
```javascript
// 获取所有数字文本框
var inputs = document.querySelectorAll('input[type="text"]');
// 获取密码输入表单
var passwordForm = document.getElementById('password-form');
// 当前输入框的索引
var currentIndex = 0;
// 密码
var password = '123456';
// 输入数字
function inputNumber(number) {
if (currentIndex < inputs.length) {
inputs[currentIndex].value = number;
currentIndex++;
}
checkPassword();
}
// 清空所有文本框
function clearAll() {
inputs.forEach(function(input) {
input.value = '';
});
currentIndex = 0;
}
// 删除前一个文本框
function deleteInput() {
if (currentIndex > 0) {
currentIndex--;
inputs[currentIndex].value = '';
}
}
// 检查密码
function checkPassword() {
if (currentIndex === inputs.length) {
var currentPassword = '';
inputs.forEach(function(input) {
currentPassword += input.value;
});
if (currentPassword === password) {
window.location.href = 'https://www.baidu.com';
} else {
passwordForm.reset();
currentIndex = 0;
alert('密码错误,请重新输入!');
}
}
}
// 给所有文本框添加输入事件
inputs.forEach(function(input) {
input.addEventListener('input', function() {
if (input.value.length === 1) {
currentIndex++;
if (currentIndex < inputs.length) {
inputs[currentIndex].focus();
}
checkPassword();
}
});
});
// 页面加载完成后第一个文本框获取焦点
window.onload = function() {
inputs[0].focus();
}
```
当然,这只是一个简单的实现,实际中需要加入更多的验证和优化。
layui里有很多iframe的情况下,如何判断,当前页面是哪一个iframe
在layui中,如果你有多个iframe并且需要确定当前活动的是哪个iframe,通常可以通过事件监听或者给每个iframe设置一个唯一的标识来实现。以下是一种可能的方法:
1. 给每个iframe添加一个自定义属性,比如`data-id`,并为其赋上不同的值,如`data-id="iframe1"`,`data-id="iframe2"`等。
```html
<iframe data-id="iframe1" src="iframe_content1.html"></iframe>
<iframe data-id="iframe2" src="iframe_content2.html"></iframe>
```
2. 当某个操作触发时(如点击按钮),通过JavaScript访问当前元素(假设是通过`$(document)`):
```javascript
var currentIframe = $('iframe[data-id]').filter(':focus').attr('data-id');
console.log('Current iframe: ', currentIframe); // 打印当前聚焦的iframe的id
```
这里,`.filter(':focus')`选择器会找到当前处于焦点状态的iframe,`attr('data-id')`则获取其`data-id`属性的值。这样你就能够知道当前活跃的iframe是哪一个了。
阅读全文