2010-11-12 15 views
5

मेरे पास एक लिंक है जिसमें "/news#1930" का href है। जब मैं /news पृष्ठ पर इस लिंक पर क्लिक करता हूं, तो यह पृष्ठ को रीफ्रेश नहीं करता है (यह यूआरएल के अंत में # 1 9 30 जोड़ता है)। मैं इसे पृष्ठ को रीफ्रेश करना चाहता हूं हालांकि (मैं उस टैग को # jquery के साथ जानकारी के साथ किसी विशिष्ट आईफ़्रेम में उस विशिष्ट आलेख को लोड करने के लिए उपयोग कर रहा हूं और जब यह रीफ्रेश नहीं होता है तो यह नया आलेख लोड नहीं करेगा)। ताज़ा करने के लिए कैसे कोई विचार है?हैश टैग के साथ पेज कैसे बनाएं Href Refresh

कोड मैं वर्तमान में है:

$(document).ready(function() { 
    var $news_story  = $(window.location.hash.substring(1)), 
     $news_number  = $news_story.selector, 
     $news_url   = 'http://www.synergy-pr.com/news/mediacenter/index.html?view=article&CustomerID=41b1if9-a17d4va5sf7of15e3kb0pa3kd2y-99d03n8sq4ad2xk8h47j00r98el5pf&ClientArticleID=' + $news_number, //url of specific article 
     $news_url_default = 'http://www.synergy-pr.com/news/mediacenter/index.html?CustomerID=41b1if9-a1hd4xa52f78f1ke3bb0oa3ld2k-90208c8g64x02nh8wf7ad0m181p5su'; //url of general news page 

     if ($news_number.length>0) { //if their is a # with a number, this means it is a sidebar link and should load that specific article 
      $('#news-feed').attr('src', $news_url); 
     } else { //if not, load the main news page 
      $('#news-feed').attr('src', $news_url_default); 
     } 
}); 

उत्तर

-5

हैश से पहले एक स्थान का प्रयास करें:

"/news #1930" 
+0

ठीक है, अच्छा कॉल है फिर से लोड होगा। यह एक लिंक के लिए काम करता है, लेकिन मेरे पास वास्तव में इनमें से तीन लिंक हैं। जब उनके पास रिक्त स्थान होते हैं, तो रीफ्रेशिंग की एक ही समस्या नहीं होती है। मैंने पहले के बीच एक स्थान, दूसरे के बीच दो, और तीसरे के बीच तीन डालकर इस पर हैक किया। यह काम करता है, लेकिन ऐसा करने का सबसे अच्छा तरीका नहीं हो सकता है। इसे बेहतर बनाने के तरीके पर कोई विचार? – Andrew

+0

हैश यूआरएल के लिए बहुत कुछ नहीं है। मुझे नहीं लगता कि एक और रास्ता है। शायद हैश वैल्यू को टोकन करना कई लोगों का उपयोग करने के लिए एक अच्छा विकल्प होगा। –

6

Hashes एक पृष्ठ पुनः लोड के कारण नहीं के लिए होती हैं। यदि आप उस आलेख को लोड करने के लिए jQuery का उपयोग कर रहे हैं तो आप एक इतिहास.go (0) या window.location.reload करना चाहते हैं, फिर हैश टैग और प्रक्रिया (ताज़ा पृष्ठ के लोड ईवेंट पर) खोजने के लिए jQuery का उपयोग करें। आप सहज एकीकरण के लिए ajax का उपयोग कर रहे है कि बावजूद पुस्तक-चिह्न की क्षमता और अनुक्रमण के लिए -

$(document).ready(function(){ 
    loadArticle = function(articleId){ 
    // code to query/load the article 
    }; 
    if (window.location.hash) 
    articleLoad(window.location.hash); 

    $('.articleLink').click(function(){ 
    window.location.hash = $(this).attr('rel'); 
    window.location.reload(); 
    }); 
}); 

संपादित मैं आप के रूप में अच्छी तरह से करना फेसबुक की तरह उसी कारण से वेबसाइटों के लिए हैश मार्ग जा रहे हैं मान।

EDIT 2 यह है कि मैं यह दिखाने के लिए आया हूं कि मैं क्या कह रहा हूं। यह एक हैश लोड करेगा जो यूआरएल के माध्यम से पारित किया गया है और पृष्ठ के भीतर नए लेखों पर किसी भी नए क्लिक को संभालेगा।

<html> 
    <head> 
    <title>Article Viewer</title> 

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 

     // loader function to serve up the correct article (pushes the article number to an iFrame 
     // so it can remotely load the article within the page 
     loadArticle = function(articleId){ 
      // set the hash (incase it's called from a link instead of a page load) 
      window.location.hash = articleId; 
      // change the iFrame src to the actual path fo the article page (customize this to fit your needs) 
      $('#article-frame').attr('src','view_article.php?article='+articleId); 
     }; 

     // check for a hash (#????) tag in the URL and load it (to allow for bookmarking) 
     if (window.location.hash) 
      loadArticle(window.location.hash.substring(1)); 

     // attack a click event to all the links that are related to loading an article 
     $('.article-link').click(function(){ 
      // grab raw article id from rel tag 
      var articleId = $(this).attr('rel'); 

      // shove loading it off to the "loader" 
      loadArticle(articleId); 

      // cancel the navigation of the link 
      return false; 
     }); 
     }); 
    </script> 
    </head> 

    <body> 
    <ul> 
     <?php for ($a = 1; $a < 10; $a++) echo "<li><a href=\"view_article.php?article={$a}\" rel=\"{$a}\" class=\"article-link\">View Article {$a}</a></li>\r\n  "; ?> 
    </ul> 
    <iframe id="article-frame" src="view_article.php?article=0" width="640" height="480"> 
     This page uses frames, unfortunately your browser does not support them. 
    </iframe> 
    </body> 
</html> 
+0

आलेख एक आईफ्रेम के भीतर स्थित है, जो वास्तव में इन सभी समस्याओं का कारण बनता है। साइट के सभी पृष्ठों पर iframe के भीतर आलेखों के लिए साइडबार लिंक हैं। मुझे समाचार पृष्ठ से लिंक करने और फिर सही लेख खोलने का एक तरीका चाहिए। जिस तरह से मुझे ऐसा करने के लिए मिला वह साइडबार लिंक में हैश टैग जोड़ता था, फिर उसे लेख आईडी से संबंधित चार अंकों की संख्या में परिवर्तित कर देता है और इसे आईफ़्रेम URL के अंत में जोड़ता है। यह उपरोक्त समस्या को छोड़कर सभी पृष्ठों पर काम करता है। यदि आपकी पूरी समस्या के लिए बेहतर दृष्टिकोण है, तो मैं निश्चित रूप से इसके लिए खुले रहूंगा। – Andrew

+0

उपर्युक्त लोडआर्टिकल() फ़ंक्शन में आप iFrame को स्थान स्विच करने के लिए सूचित कर सकते हैं ($ ('#iframe') के प्रभाव में कुछ .attr ('src', 'http: //mysite.com/article'+articleId+' .html '); - जब तक मैं स्थिति को पूरी तरह समझ नहीं पा रहा हूं, जो भी आप पूरा करने की कोशिश कर रहे हैं वह काफी सरल होना चाहिए। –

+0

मुझे यकीन है कि यह बहुत आसान होना चाहिए, लेकिन मुझे इसे समझने में कुछ परेशानी हो रही है। मैंने अपने उपरोक्त प्रश्न में वर्तमान में कोड जोड़ा है। यह (प्रत्येक लिंक # टैग के बीच की विभिन्न जगहों के साथ) बहुत अच्छा काम करता है, मुझे पता है कि यह करने का सबसे अच्छा तरीका नहीं है और यह सही करना चाहता है रास्ता। कोई मदद अद्भुत होगा। – Andrew

-1

इस प्रयास करें:

$("a").click(function(){ 
    $("a").click(function(e){ 

    var location = $(window).attr('location').pathname.substring(1); 
    var goingToPage = $(this).attr('href'); 

    // if goingToPage is same page as current page, then assign new url and reload 
    // this is required to reload the page on a hash tag 
    if(goingToPage.indexOf(location) != -1){ 
     $(window).attr('location').assign(goingToPage); 
     $(window).attr("location").reload(); 
    } 
}); 
}); 
0

$("a").click(function() { 
 
     var hash = this.hash; 
 
     if (hash != "" || hash!= null) 
 
      window.location.reload(); 
 
    });

इस कोड को हर पृष्ठ डायन लिंक हैश

संबंधित मुद्दे