0

我有一个 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是我用于离开我的网页的链接的类。

4

3 回答 3

2

尝试使用document.querySelectorAll(".external-link")

来源

于 2013-01-30T10:03:08.307 回答
0

如果这对您来说是一个可行的选择,请考虑包括 jQuery 库。那么你可以这样写:

$('.external-link').click(function() { confirmLeave() });
于 2013-01-30T10:00:00.730 回答
0

这里的问题是它document.getElementsByTagName()需要一个元素作为输入,例如div,spanaexternal-link不是一个元素,所以它永远不会返回任何东西。

对于 IE8,您可以使用document.querySelectorAll(".external-link"). 它需要一个 CSS 选择器作为输入。

如果您也需要支持较旧的浏览器,您可以尝试使用https://gist.github.com/2397759,它是一种 polyfill,可以在原生getElementsByClassName不支持它的浏览器上工作。

于 2013-01-30T10:01:28.617 回答