2 回答
![?](http://img1.sycdn.imooc.com/54584e1f0001bec502200220-100-100.jpg)
TA贡献1877条经验 获得超1个赞
一个不依赖于 JQuery 的解决方案是修改你的 HTML 和 JavaScript,如下(注意,虽然这个脚本有点臃肿,但它应该是 IE11 兼容的):
var cancelButtons = document.querySelectorAll(".cancel-fullscreen");
for (var i = 0; i < cancelButtons.length; i++) {
var cancelButton = cancelButtons[i];
cancelButton.addEventListener("click", function() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
}
}, false);
}
var tableHolders = document.querySelectorAll(".tableHolder");
for (var j = 0; j < tableHolders.length; j++) {
var tableHolder = tableHolders[j];
var fullScreenButton = tableHolder.querySelector(".view-fullscreen");
fullScreenButton.addEventListener("click", function() {
if (tableHolder.requestFullscreen) {
tableHolder.requestFullscreen();
} else if (tableHolder.msRequestFullscreen) {
tableHolder.msRequestFullscreen();
} else if (tableHolder.mozRequestFullScreen) {
tableHolder.mozRequestFullScreen();
} else if (tableHolder.webkitRequestFullScreen) {
tableHolder.webkitRequestFullScreen();
}
}, false);
}
此脚本要求cancel-fullscreen以这种方式将类应用于每个“取消全屏”按钮:
<button id="cancel-fullscreen" class="cancel-fullscreen">Cancel fullscreen</button>
有关完整的工作版本,请参阅下面的代码片段 - 希望有所帮助!
(function() {
var cancelButtons = document.querySelectorAll(".cancel-fullscreen");
for (var i = 0; i < cancelButtons.length; i++) {
var cancelButton = cancelButtons[i];
cancelButton.addEventListener("click", function() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
}
}, false);
}
var tableHolders = document.querySelectorAll(".tableHolder");
for (var j = 0; j < tableHolders.length; j++) {
var tableHolder = tableHolders[j];
var fullScreenButton = tableHolder.querySelector(".view-fullscreen");
fullScreenButton.addEventListener("click", function() {
if (tableHolder.requestFullscreen) {
tableHolder.requestFullscreen();
} else if (tableHolder.msRequestFullscreen) {
tableHolder.msRequestFullscreen();
} else if (tableHolder.mozRequestFullScreen) {
tableHolder.mozRequestFullScreen();
} else if (tableHolder.webkitRequestFullScreen) {
tableHolder.webkitRequestFullScreen();
}
}, false);
}
})();
.tableHolder {
background: white;
}
<div class="tableHolder" id="fullscreen-table">
<button id="expand-fullscreen" class="view-fullscreen">View fullscreen table</button>
<button id="cancel-fullscreen" class="cancel-fullscreen">Cancel fullscreen</button>
<table width="100%" border="1" cellspacing="0" cellpadding="3">
<caption>FIRST TABLE</caption>
<tr>
<th>HEADER</th>
<th>HEADER</th>
<th>HEADER</th>
<th>HEADER</th>
<th>HEADER</th>
<th>HEADER</th>
<th>HEADER</th>
</tr>
<tr>
<td>TEXT</td>
<td>TEXT</td>
<td>TEXT</td>
<td>TEXT</td>
<td>TEXT</td>
<td>TEXT</td>
<td>TEXT</td>
</tr>
</table>
</div>
<br/><br/><br/><br/><br/>
<div class="tableHolder" id="fullscreen-table">
<button id="expand-fullscreen" class="view-fullscreen">View fullscreen table</button>
<button id="cancel-fullscreen" class="cancel-fullscreen">Cancel fullscreen</button>
<table width="100%" border="1" cellspacing="0" cellpadding="3">
<caption>FIRST TABLE</caption>
<tr>
<th>HEADER 2</th>
<th>HEADER 2</th>
<th>HEADER 2</th>
<th>HEADER 2</th>
<th>HEADER 2</th>
<th>HEADER 2</th>
<th>HEADER 2</th>
</tr>
<tr>
<td>TEXT 2</td>
<td>TEXT 2</td>
<td>TEXT 2</td>
<td>TEXT 2</td>
<td>TEXT 2</td>
<td>TEXT 2</td>
<td>TEXT 2</td>
</tr>
</table>
</div>
![?](http://img1.sycdn.imooc.com/5458689e000115c602200220-100-100.jpg)
TA贡献1799条经验 获得超8个赞
您需要向上遍历层次结构并找到最近的 div(如果您能够使用 jQuery,请参阅 jQuery.closest)。
function eventHandler(e) {
//normally, 'this' points to the element that was clicked
//but if not, you can use e.target
var parent = this;
while (parent.tagName != 'div') {
parent = parent.parentNode;
}
...
}
添加回答
举报