我有一个javascript要求用户确认他们想要离开我的网站。这是它的外观:
function confirmLeave()
{
if(confirm("Do you want to leave my webpage?")) {
return true;
} else {
if(window.event) {
window.event.returnValue = false;
} else {
e.preventDefault();
}
return false;
}
}
function initiate ()
{
var links = document.getElementsByClassName("external-link");
for (var i = 0; i < links.length; i++) {
links[i].onclick = confirmLeave;
}
}
window.onload = initiate;
它适用于Firefox和Chrome,但不适用于IE8。我知道document.getElementsByClassName
不起作用,我尝试使用document.getElementsbyTakeName
重新制作我的代码但是没有让它工作。这就是我想出的:
function confirmLeave()
{
if(confirm("Do you want to leave my webpage?")) {
return true;
} else {
if(window.event) {
window.event.returnValue = false;
} else {
e.preventDefault();
}
return false;
}
}
funciton initiate ()
{
if(document.getElementsByClassName)
{
var links = document.getElementsByClassName("external-link");
for (var i = 0; i < links.length; i++) {
links[i].onclick = confirmLeave;
}
} else {
var links = document.getElementsByTagName("external-link");
for (var i = 0; i < links.length; i++) {
links[i].onclick = confirmLeave;
}
}
}
window.onload = initiate;
external-link
是我用于离开我的网页的链接的类。
答案 0 :(得分:2)
尝试使用document.querySelectorAll(".external-link")
答案 1 :(得分:0)
考虑包含jQuery库,如果这对你来说是一个可行的选择。 那么你可以这样写:
$('.external-link').click(function() { confirmLeave() });
答案 2 :(得分:0)
这里的问题是document.getElementsByTagName()
接受一个元素作为输入,例如div
,span
或a
。 external-link
不是元素,因此它永远不会返回任何内容。
对于IE8,您可以使用document.querySelectorAll(".external-link")
。它需要一个CSS选择器作为它的输入。
如果您还需要支持旧版浏览器,可以尝试使用https://gist.github.com/2397759这是一个填充,以使getElementsByClassName
能够在不支持原生浏览器的浏览器上运行。