Обнаружение Href щелкает - PullRequest
1 голос
/ 04 октября 2011

Я пытаюсь определить, нажимается ли на какой-либо элемент onbeforeunload. Я не могу заставить его работать. Ниже приведены примеры кода Javascript и HTML-кода проекта (обратите внимание, что я не контролирую элемент HTML, поскольку он не является моим сайтом)

function checkLeave() {
   var p = document.getElementByElementById('yeah');
   if (p.href.onclick) {
      //do something
   }

   else {
      //do something else
   }
   }
 window.onbeforeunload = checkLeave;


 HTML CODE
 //The goSomewhere goes to another page
 <a id="yeah" href="javascript:goSomewhere();">
    <img src="smiley.png">
 </a>

Спасибо заранее, J

Ответы [ 3 ]

1 голос
/ 04 октября 2011

Что вам нужно сделать, это привязать обработчик событий к каждому <a href=""></a> на странице.Это можно сделать с помощью следующего:

// Select all links
//var allLinks = document.querySelectorAll('a[href]');
var allLinks = document.links;

// Bind the event handler to each link individually
for (var i = 0, n = allLinks.length; i < n; i++) {
    //allLinks[i].addEventListener('click', function (event) {});
    allLinks[i].onclick = function () {
        // Do something            
    };
}
0 голосов
/ 04 октября 2011

Может как то так? (только идея)

document.getElementById('yeah').onclick = function() {
  clicked = this.href;
};
0 голосов
/ 04 октября 2011

Вы проверяете наличие свойства onclick для тега <a>.Его нет в разметке.Вместо использования onclick разметка вызывает скрипт как href элемента.Поэтому вам нужно искать скрипт в href:

var p = document.getElementByElementById('yeah');
if (p.href.indexOf("javascript") === 0) {
   //do something
}
else {
   // do something else
}
...