1

我正在从一个打印成 HTML 电子书的网站在线阅读内容。

我不想下载任何东西或转换任何东西,但我想为我所在的当前行添加书签,这样当我点击书签时,我想被带到相应的行(不仅仅是页面) .

该站点仅包含文本,因此我无法像 www.wikipedia.org/article#subchapter 那样使用“#”来解决问题

(我为这门粗俗的语言道歉,我是一名初级开发人员,曾在 Java 和 ABAP 工作,但没有网络相关内容的经验)

我想我可以保存实际上是 Javascript 代码的书签,将我带到特定的行,但不知道从哪里开始,不是一个网络人。

任何想法(或实现)都会很棒。

Thx,你们统治。

[编辑] 如果我的书签保存了部分文本,也可以使用 AFAIK,然后单击书签时我会被带到该文本

[编辑]

http://gutenberg.spiegel.de/buch/2095/2这基本上是网站。不介意德国人。

4

3 回答 3

1

DOM 中没有一行这样的东西。但是你可以滚动到一个元素。有一个非常好的 jQuery 扩展,它可以滚动到。

但是做一个书签可能有点乱。因为你需要 jQuery 和这个插件。

要使其正常工作,您必须在以下位置添加书签:

javascript: document.location = [website url] ; [jQuery's File content] ; [the plugin] ; [jQuery scrollTo code]

在哪里[jQuery scrollTo code]会是这样的:

$(...).scrollTo( $('ul').get(2).childNodes[20], 800 );
于 2012-09-22T09:04:24.467 回答
1

您可以编写一个小 chrome 扩展,每 100 个单词插入一个标签。然后您实际上可以使用您引用的 # 语法。

插入 HTML**:

<a name="line40" />

你的书签

<a href="page.html#line40">bookmark</a>

**注意:在 HTML5 中使用带有“ID”的标签而不是带有“name”属性的锚点。

于 2012-09-22T09:24:25.060 回答
1

BlackJackMack 在总体思路上击败了我,但这里有一些插入元素的代码以及事后跳转到特定散列的方法(因为当你第一次进入页面时,id 不存在时需要)。

paragraphs = document.getElementsByTagName('p');
for (x = 0; x < paragraphs.length; x++) {
    var p = paragraphs[x];
    var a = document.createElement('a');
    a.id = 'p' + x;
    a.href = '#' + a.id;
    a.innerText = '#';
    p.parentNode.insertBefore(a, p)
}

if (document.location.hash) {
    var hash = document.location.hash;
    document.location.hash = '';
    document.location.hash = hash;
}

我只在 Chrome 上测试过,所以请记住这一点。可以将其粘贴到控制台中进行试用。我没有使用 jQuery 或任何插件来使其更容易适应书签代码。

请记住,这仅在页面正确使用段落标签时才有效,因此如果所有内容都是 div 或其他内容,则必须对其进行调整。

于 2012-09-22T10:11:01.093 回答