2012-07-30 87 views
0

這裏是背景:我有一個Javascript函數,我使用搜索字段搜索相關鏈接列表,並基於用戶首選項顯示他們在同一頁面上的div中搜索的鏈接,或者一個使用_blank的新窗口。Javascript:將頁面(從頁面列表中)加載到div中,並在輸入字段中顯示其URL?

我很快意識到我的問題是,如果用戶選擇在div內加載頁面而不是在新標籤頁中,我希望用戶能夠看到整個頁面的URL。我希望他們仍然可以複製/粘貼網址。我想,因爲我已經獲得了創建鏈接的Javascript函數,我只需添加一個'document.getElementByID('IDHERE')。value = processedPage;但是(無論出於何種原因)似乎並不是加工?

下面是我的javascript參考:

/* Function to go jump to a user guide */ 
function goTo() { 
    var searchAgainst = document.getElementById('guidesSearch').value; // get the search value 
    nWT_check = localStorage.getItem('newWindowToggle'); 
    var processedPage = 'http://update.my-site.com/onlinehelp/'; 
    var findFlag = 0; 

    for (i=0; i<allGuides.length; i++) { 
     if (searchAgainst == allGuides[i]) { 
      findFlag = 1; 
      processedPage += allURLs[i]; 
      if (nWT_check == '0') { //Check against the site options 
       alert(processedPage); // ALERT to see if processedPage is correct. It is, and this alert triggers. 
       document.getElementById('guidesLink').value = processedPage; // This does not seem to trigger? 
       document.getElementById('guidesFrame').src = processedPage; // But then this does, which loads the new page in the DIV. 
      } 
      else if (nWT_check == '1') { 
       window.open(processedPage,'_blank'); 
      } 
     } 
    } 
    if (findFlag == 0) { 
     $('#notFoundModal').modal(); 
    } 
} 

因此,基本上,它看起來在localStorage的項目,如果是0,它DIV,如果是1,它新的一頁。我試圖調試if(nWT_check =='0'){//檢查站點選項部分。

我知道每一個的人的時間和知識是有價值的,人們沒有時間去調試複雜的代碼所有的時間,但任何洞察我可能是做錯了什麼或如何更好地處理這將不勝感激。

回答

0

你應該考慮使用URL散列技術。

如果你的主頁是index.php,因爲每個頁面可以被Ajax加載,你使用JavaScript更改文件位置的散列(document.location.hash='...')爲新值:

index.php#pageName 

所以當主頁面加載,使用JavaScript查看它是否具有散列值,然後使用散列值,使用AJAX抓取匹配的內容。

本文介紹的是如何工作的細節:http://blog.mgm-tp.com/2011/10/must-know-url-hashtechniques-for-ajax-applications/

這種技術的優點是,用戶既可以使用書籤和共享URL,它仍然可以工作。

+0

我已經在使用哈希技術來加載我認爲的主要頁面,因爲我的主要是index.php#home和頂部加載的不同頁面,如#help,#guides等。我的場景I * THINK *可能會有所不同,因爲我要做的是將它們保留在#guides散列中,但在該指南頁面內加載ANOTHER頁面(指南本身)爲div,然後顯示其URL。這是否改變了事情?或者有任何意義呢? (大聲笑)。我只是不確定是否可以將哈希技術翻倍,但我會看看你的文章,並且非常感謝你的回覆! – 2012-07-30 17:43:01

+0

可能值得補充的是,我嘗試加載和鏈接到的問題指南位於單獨的服務器上,因此它們不是本地網站中的本地資源。因此我正在加載完整的URL地址。 – 2012-07-30 17:44:15

+0

您可以修改您的散列處理程序以使用分隔符和多個頁面並進行鏈接調用。我以前做過這件事,取得了很好的成績。 「#guides_sec1_page3」。只需按順序運行您的呼叫。 – 2012-07-30 17:47:09

0

我會嘗試使用jQuery設置字段的值,而不是:

$("#guidesLink").val(processedPage); 

這可能會解決一些潛在的瀏覽器設置輸入字段值的怪癖。