2015-01-15 80 views
1

http://arstechnica.com/science/2015/01/thin-atmosphere-is-enough-to-keep-many-exoplanets-spinning/#p2如何鏈接到相應頁面的第二段?我知道它與「#p2」片段有關,但所討論的段落沒有「p2」的標識。HTML段落片段Id

在Windows 7

+0

你想讓我們點擊這個鏈接? –

+0

我想這將有必要回答這個問題。這是我剛剛注意到使用新聞閱讀器的事情。還沒有試圖找到另一個例子。我不知道它是如何工作的;所以我自己創造一個例子是不可能的。 –

+0

將'#p2'更改爲任何其他號碼,它將移至相應的段落。不知道答案是什麼,但可能的答案是,它會根據您輸入的數字找到第一個,第二個等段落標記。或者他們有一個自定義函數來處理通過id獲取元素。編輯:我也可以確認,Windows 7上的Chrome也會發生同樣的情況。 – Nicolas

回答

1

這是自定義javascript行爲當然。如果您好奇查看文件ars.min.ce8deeda61d4ec728127c4f0c17cf83e.js。它是最小的可以美化它,發現Window.onhashchange事件處理這看起來是這樣的:

ars.setup_hashchange = function() { 
    var a = function() { 
    hash = window.location.hash.replace(/^#/, ""); 
    if (!hash) 
     return; 
    var a = $("#" + hash + ", *[name=" + hash + "]"), b = hash.match(/^p([0-9]+)(n)?$/), c = hash.match(/^h([0-9]+)$/); 
    if (a.length) 
     ars.scroll_to(a.first()); 
    else if (b) { 
     var d = $(".article-content > p")[Math.max(0, b[1] - 1)]; 
     b[2] && (d = $(d).next()), d && ars.scroll_to($(d)) 
    } else if (c) { 
     var e = $(".article-content").find("> h2, > h3, > h4").filter(":not([data-no-jump])")[Math.max(0, c[1] - 1)]; 
     e && ars.scroll_to($(e)) 
    } 
}; 
$(window).on("hashchange", a), setTimeout(a, 0) 

因此,需要一段指數從location.hash,然後找到相應的p元素withing $(".article-content > p")收集,最後滾動文檔吧。

+0

非常酷。我試圖找出如何在發佈答案時在FF控制檯中找到文檔和窗口事件偵聽器。當他們剛剛將相應的ID添加到文檔的相關部分時,似乎是一個相當複雜的解決方案[對於一個不存在的問題]。 –

+0

我同意。而且這個解決方案在IE <8時也不起作用,而id =「pX」'在任何地方都能正常工作。我只需編寫3行代碼即可動態設置ID,這樣您甚至不需要手動進行設置。 – dfsq

0

這是<article>下和第一<p><p class="byline" itemprop="author creator"和第二<p>使用Firefox 31.0是你指的一個。搜索第一個<p>,你會得到答案。 所以#p2指第二個<p>

+0

這看起來不對。 '#p2'將我帶到以「不用說...」開頭的段落,這實際上是'

'內的第三段。 –