2014-03-26 31 views
1

我該如何判斷,在JavaScript/jQuery中,如果鏈接是Javascript?檢查鏈接是否包含javascript

例如:

<a href="javascript:someFunction();">Trigger</a> 

努力確保腳本只記錄鏈接,而不是JavaScript中,錨等

基本上我需要捕捉我。每個鏈接的href通過他們(已經完成),我只是需要一個可靠的方法來檢查變量,看它是否是JavaScript的,即函數w/E

var rand = function() { 
    return Math.random().toString(36).substr(2); 
}; 

$(function(){ 
    $('#lhcb a').each(function() { 
     var rawlink = $(this).attr("href"); 
     var link = encodeURIComponent(rawlink); 
     var token = rand(); 
     var href = $(this).prop('href'); 
     var proceed = $.get("lhc/link.php?link=" + link + "&a=c", function(data) { 
      if (data == 1) { 
       return true; 
      } else { 
       return false; 
      } 
     }); 
     if (href.match("^javascript:")) { 
      proceed = false; 
     } 
     if (rawlink.charAt(0) != '#') { 
      if (proceed) { 
       $(this).after(" <span style='font-size:xx-small;'>(Hits: <span id='" + token + "'></span>)</span>"); 
        $.get("lhc/link.php?link=" + link + "&a=q", function(data) { 
         $('#' + token).html(data); 
        }); 
       $(this).attr("href", "lhc/link.php?link=" + link + "&a=g"); 
      } 
     } 

    }); 
}); 

這是我的,但如下文所述,它禾無法看到href是否只是一個沒有JavaScript聲明的函數。

+0

您可以使用javascript提供的'indexOf'方法檢查'href'是否包含'javascript:' – 2014-03-26 06:30:51

回答

0

一個小腳本可以提供幫助。我寫了一個例子:

http://jsfiddle.net/qXkHX/

var normalLinks = []; 
$("a").each(function(i) { 
    var a = $(this); 
    var href = $.trim(a.attr("href")); 
    if(href.indexOf("javascript:") !== 0) normalLinks.push(href); 
}); 

$("#result").text(normalLinks.join(",")); 

它通過在文檔中的錨迭代,並且每推不使用JavaScript啓動鏈接:。也許這有幫助。

+0

鏈接也可以沒有「javascrip:t」。 Trigger。在這種情況下,這是毫無用處的。 –

+0

編輯:if(href.indexOf(「javascript:」)**!= - 1 **)normalLinks.push(href); –

+0

無需編輯。 javascript應該是修剪後的第一個單詞。據我所知,還有href =「func()」不起作用。 – Zafer