我有这段代码显示了一个按钮谁显示一个弹出窗口,我希望用户能够关闭弹出窗口点击它的外部时,它是打开的。
/* Clean up the URL from '#popup1' in the end */
history.replaceState(null, null, ' ');
/* Take off the popup from DOM before clicking in case user refresh*/
let id_popup = document.querySelector('#popup1');
let popup = id_popup.parentNode
popup.removeChild(id_popup);
/*Opening the popup*/
function Open() {
popup.appendChild(id_popup);
let class_popup = document.querySelector('.popup');
window.addEventListener('click', function (e) {
if (!class_popup.contains(e.target)) {
alert('You\'re clicking outside the popup !')
}
});
}
/*Closing the popup*/
function Close() {
popup.removeChild(id_popup);
history.replaceState(null, null, ' ');
}
css prettyprint-override"> .button {
font-size: 1em;
padding: 10px;
color: #000;
border: 2px solid #06D85F;
border-radius: 20px/50px;
text-decoration: none;
cursor: pointer;
transition: all 0.3s ease-out;
}
.button:hover {
background: #06D85F;
}
.overlay {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(0, 0, 0, 0.7);
transition: opacity 500ms;
visibility: hidden;
opacity: 0;
}
.overlay:target {
visibility: visible;
opacity: 1;
}
.popup {
margin: 70px auto;
padding: 20px;
background: #fff;
border-radius: 5px;
width: 60%;
position: relative;
transition: all 5s ease-in-out;
}
.popup h2 {
margin-top: 0;
color: #333;
font-family: Tahoma, Arial, sans-serif;
}
.popup .close {
position: absolute;
top: 20px;
right: 30px;
transition: all 200ms;
font-size: 30px;
font-weight: bold;
text-decoration: none;
color: #333;
}
.popup .close:hover {
color: #06D85F;
}
.popup .content {
max-height: 30%;
overflow: auto;
}
@media screen and (max-width: 700px) {
.box {
width: 70%;
}
.popup {
width: 70%;
}
}
<a class="button" href="#popup1" onclick="Open()">Let me Pop up</a>
</div>
<title>hi</title>
<div id="popup1" class="overlay">
<div class="popup">
<h2>Title</h2>
<a class="close" onclick="Close()" href="javascript://">×</a>
<div class="content">
Text
</div>
</div>
尝试以下操作:
let allElems = document.querySelectorAll("body > div:not(#popup1)"); // Special query selector to get everything except .popup and its children
Array.from(allElems).forEach(elem => // Convert to iterable (with Array.from) and loop through all elements selected
elem.addEventListener('click', function (e) { // Give them all the click event listener.
alert('You\'re clicking outside the popup !')
});
}
问题主要出在if
语句上,因为.contains
有点搞砸了事情。另一种方法是将两个元素都转换为字符串,并以这种方式比较它们,但这种方法更好,也更快(稍微),因为我们不需要检查每一次单击是否在框中。
我正在尝试创建一个 Angular 4 自定义表单控件作为我的日期选择器。我正在使用ngx-bootstrap,到目前为止,我已经使用ngx-bootstrap的输入,日期选择器和弹出框组件设置了这个自定义表单控件。自定义控件打开一个焦点为日期选取器的弹出窗口,但是,我需要能够通过与弹出框内容交互来更改日期,并且在我不与弹出框或输入交互时它应该关闭。我试图跟踪ngx-bootstrap githu
所以我只是想知道是否有人知道在JavaFX 8中关闭弹出窗口的正确方法。例如,如果我的弹出窗口上有一个取消按钮,当按下取消按钮时,我应该使用什么方法来摆脱弹出窗口?我目前只是使用隐藏()方法。这让我有点害怕,因为我不确定弹出窗口是否在后台某处徘徊并且仍然需要关闭。但是,当我在这里查看java文档时,我没有看到任何关闭()方法,我也没有在我的IDE自动完成中看到关闭()方法。不过,我确实在文档中看到
问题内容: 我通过window.open打开了一个弹出窗口。使用JavaScript打开,我想在关闭此弹出窗口时刷新父页面。(onclose事件?)我该怎么办? 问题答案: 您可以使用“ window.opener”访问父窗口,因此,在子窗口中编写如下内容:
完成表单并点击注册按钮后,我得到一个弹出的信息消息(模态),消息中有close(X)和OK按钮和标题:在ABC Project下,显示了以下内容&通知用户注册成功的文本。 我尝试了几种方法来点击这个弹出窗口中的OK按钮,但都没有成功: 附加提示: null 我很感激你给我的提示和支持谢谢
我有问题,点击链接从弹出窗口。单击按钮后,弹出窗口显示约3秒: 我正试图通过单击“取消” 和 但是链接没有被点击。我不知道如何断言工作在这个弹出
问题内容: 我想使用Firefox浏览器,使用RSelenium从网站下载文件。我正确地完成了所有操作(导航,选择正确的元素并写下我想要的内容);现在,我单击“下载”按钮,然后打开一个Firefox弹出窗口,并询问我是否要下载文件或“用…打开”。 不幸的是,由于隐私限制,我无法编写示例。 我的问题是:如何在需要时切换到弹出窗口/警报并单击“确定”? 我尝试了以下方法,但均未成功: 我也试过了 但是