2012-07-30 88 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); 

这可能会解决一些潜在的浏览器设置输入字段值的怪癖。