2012-04-13 29 views
0

我遇到的https://github.com/browserstate/ajaxifyJavaScript邏輯以找出是否一個環節是內部

內具有以下功能的一些問題的URL是以下形式:

http://rooturl.com/?alfa=a 

或其他任何查詢字符串未被識別爲內部鏈接。 (凡rooturl.com是我的內部網頁)

// Internal Helper 
    $.expr[':'].internal = function(obj, index, meta, stack){ 
     // Prepare 
     var 
      $this = $(obj), 
      url = $this.attr('href')||'', 
      isInternalLink; 

     // Check link 
     isInternalLink = url.substring(0,rootUrl.length) === rootUrl || url.indexOf(':') === -1; 

     // Ignore or Keep 
     return isInternalLink; 
    }; 

如何修改此功能進行指望它內部URL與查詢字符串爲「內部鏈接」?

參考該功能可在下列情況下使用:

$this.find('a:internal:not(.no-ajaxy, .no-ajaxy a)').click(function(event){ 
    // so on... 
}); 
+0

簡單:解析url,拉出域名,檢查它是否可以接受。 – zzzzBov 2012-04-13 16:49:20

回答

1

我認爲,所有你需要做的是檢查的?在URL,因爲它需要查詢字符串

isInternalLink = url.substring(0,rootUrl.length) === rootUrl || url.indexOf('?') !== -1 || url.indexOf(':') === -1; 

但另一個URL可能有查詢字符串,是外部,所以你可能需要使用分裂(),檢查第一位使用rootUrl匹配

var bits = url.split('?'); 

if (bits[0] === rootUrl) isInternalLink = true; 
0

這樣的事情應該工作

$('a[href^=http]') 

將只與外部的HREF

返回鏈接或做這樣的事情

$('a').filter('[href^=http]') 

$(this).is('[href^=http]') //will return true if external hrefs 

你的情況

相關問題