【发布时间】:2021-11-23 15:50:01
【问题描述】:
我尝试创建简单的弹出窗口离开网站同意。
function exModal() {
const modalhtml=` <div class="modal-header">
🔗 You're Leaving Our Site!
<span class="close-modal">×</span>
</div>
<div class="modal-body">
This is a link to an external site. Click OK to continue to the content. Feel free to comeback again. Make Sure To Follow Instructions Properly.
<br/><br/>
<div class="show-link"></div>
</div>
<div class="modal-footer">
<button class="close-modal">Close</button>
<button class="confirm-modal">OK</>
</div> `;
const getlink = document.querySelector('.ex-link').getAttribute('data-href');
const extra=document.createElement('div');
extra.classList.add('modal-content');
extra.innerHTML=modalhtml;
document.body.appendChild(extra);
document.querySelector('.show-link').innerHTML='('+getlink+')';
const close=document.querySelectorAll('.close-modal');
document.querySelector('.confirm-modal').addEventListener('click', (e) => {
window.open(getlink, '_blank');
});
let i;
for (i = 0; i < close.length; i++) {
close[i].addEventListener('click', (e) => {
extra.remove();
});
}
}
问题
- 如何防止在打开模式时点击紫色按钮。
- 我还想添加一些功能,比如当有人单击确定按钮时,它会在其他选项卡中打开链接时关闭模式。
- 我可以用一个事件监听器处理两个事件吗? (参考(2)题)那怎么办?
一个好的参考将完成这项工作。我试过谷歌搜索,但大多数教程都包含 jquery 或其他脚本
【问题讨论】:
-
用一个事件监听器处理两个事件?您可以使用 document.querySelector("button").addEventListener("click", ()=>{eventOne(); eventTwo()}) 执行类似操作,其中 eventOne() 和 eventTwo()是充当事件 qrappers 的函数
-
@Opeolluwa 谢谢,我想通了。我的代码有点乱(Rookie Mistake),所以它在第一次尝试时没有用,但我成功了。你能帮我理解为什么codepen说“exModal”是未定义的!那是因为我将变量保留在函数中吗?还是因为放置了外部js?
-
我会检查一下,然后回复你
标签: javascript hyperlink modal-dialog