2012-07-12 64 views
0

是否有可能搜索您開發的所有網頁(不僅是當前頁面的用戶是)的身體標記與指定的ID?如果是這樣,我會怎麼去做這個在Javascript中?另外,我將如何着手將用戶重定向到包含具有唯一ID的主體的頁面?搜索所有頁面<body>與唯一的ID

+1

你不能用JavaScript做到這一點,因爲它的範圍是有限的到它正在運行的頁面。但是,如果您使用的是mvc樣式的應用程序,則可以輕鬆地將其重定向到page/specificPageId(或類似的東西)。 'window.location.href = newUrlHere'(很明顯,爲此你必須有一個你的代碼知道的特定的頁面命名方案) – nbrooks 2012-07-12 01:44:41

+1

謝謝,我確實有一個特定的頁面命名方案,所以這應該是一個很好的解決方案。但是,是否可以搜索其名稱中包含特定關鍵字的網頁? – user1410668 2012-07-12 01:52:30

+0

你爲什麼甚至試圖通過身體ID而不是網址?例如,如果你有一個身體標識爲「123」的頁面,爲什麼不把該頁面稱爲「mypage123.htm」(或.php,.asp,.jsp等等)。我認爲甚至可以給身體一個id的唯一原因是,如果你有一個樣式表在頁面之間共享,並且想要將特定樣式應用到一個頁面的主體。 – nnnnnn 2012-07-12 01:52:32

回答

3

如果你真的想這樣做,你能做到這一點,如果你知道的網頁的網址:

(使用jQuery)

function searchPages(urls,elem,success,failure){ 
    nextUrl(urls,0); 
    // this calls itself as a callback because $.load is asynchronous 
    function nextUrl(i){ // this function tries to load a body#myId for the url 
     $('<div /'>).load(urls[i]+' '+elem,function(){ 
      // if it loaded there'd be html 
      if($(this).html()!=='') success.call(this,urls[i]); 
      // if you've loaded all the pages, then you're done 
      if(i===urls.length) 
       failure.call(this,urls[i]); 
      // otherwise, call the function again for the next url 
      else nextUrl(i+1); 
      }); 
    }; 
} 

searchPages(['/url1','/url2','/url3'],'body#myId',function(url){ 
    console.log(url); // this is the url you want 
    console.log($(this)); // $(this) is the div that the body elem was loaded into 
},failed); 

// this is called if you don't find the page 
function failed(){ alert('no page found'); }; 
+0

你可以添加一個關於這個代碼的工作原理的解釋嗎?如果你這樣做,我會+1。 – Jon 2012-07-12 01:56:04

+0

+1。巧妙的解決方法。雖然'.load()'會從源頭中刪除樣式表,外部腳本和'head',所以我不認爲這將是一個可用的解決方案... – nbrooks 2012-07-12 01:59:16

+0

@nbrooks最後的想法是得到'身體'的'身份證',不是嗎? +1太 – JFK 2012-07-12 02:01:41