Perl - 如何将新网页滚动到上一个行位置

时间:2014-04-30 04:41:01

标签: javascript html perl

在perl脚本创建新网页之后,有类似(goto-char previous-position)的内容 - 例如,在生成新页面之前,记录用户所在的当前行号并将其存储为变量(即, previous-position)然后在创建新网页后滚动到​​同一位置?


编辑:这是我发现Google搜索似乎与之相关的内容。如果页面位置可以记录为变量并传递给脚本并在加载新网页时执行,那么这可能是一个可行的解决方案:

HTML方法是在您要滚动到的位置声明以下内容:

[HTML]<a name="somename">[/HTML]

然后可以通过访问例如页面来自动滚动页面。

[HTML]http://www.yourwebsite.com/yourpage.html#somename[/HTML]

javascript方式是使用scrollTo,从左侧和顶部到您要滚动到的位置的坐标,例如,展开|选择|换行|行号

window.scrollTo(0,100);

要在页面加载时实现此目的,请使用on onload

[HTML]<body onload="window.scrollTo(0,100); ...>[/HTML]

或定义一个函数并调用它。

1 个答案:

答案 0 :(得分:1)

perl / html中的解决方案非常简单,每个人都错过了它,并认为它必须是javascript。我们需要做的就是在html中添加一个锚点(例如print '<a name="form_anchor"></a>';)并将&#form_anchor放在perl脚本参数的尾端。 [javascript中提供了不同的解决方案,但我更喜欢在现有的perl脚本中包含解决方案。]

注意:可以轻松地为所需的每个链接设置锚点,以便在单击链接时,将相应的参数传递给perl脚本。

在某些时候,我会重新审视这个答案并将其修改/编辑成一个更简单的例子 - 然而,它是深夜的,下面列出的剧本完全按照我的希望工作。

  
#!/usr/bin/perl

use CGI qw(:standard);

# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
# yasnippet

my $yasnippet_dir = '/home/lawlist/.0.data/.0.emacs/.0.snippets/lawlist-tex-mode';

my $yasnippet_query = new CGI;

my $selected_file_yasnippet = $yasnippet_query->param('selected-file-yasnippet');

my $yasnippet_selected_file = $yasnippet_dir . "/" . $selected_file_yasnippet;

# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
# forms

my $form_dir = '/home/lawlist/.0.data/forms';

my $form_query = new CGI;

my $selected_file_form = $form_query->param('selected-file-form');

my $form_selected_file = $form_dir . "/" . $selected_file_form;

# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
# header

print "Content-type: text/html\n\n";

open(FILE,'/home/lawlist/www/header.include.shtml') and print <FILE>;

# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
# yasnippet

print <<HTML;

<table bgcolor="#990066" width="100%" cellspacing=0 cellpadding=6 border=0>
<tr>
<td>
<table width="100%" bgcolor="#FFFFCC" cellspacing=0 cellpadding=10 border=0>
<tr>
<td>

<table width="100%" bgcolor="#000000" cellpadding=2>
<tr>
<td align=center>
<table width="100%" border=0 cellpadding=0 cellspacing=0>
<tr>
<td bgcolor="#990066" HEIGHT=25 align=center><font face="verdana,arial,helvetica" COLOR="#FFFFFF" size=3><b>Yasnippet -- Code Snippets</b></font></td>
</tr>
</table>
</td>
</tr>
</table>

<br>

<table width="100%" border=0 cellspacing=0 cellpadding=2>
<tr>
<td rowspan="1" width="25%"><font face="verdana,arial,helvetica" color="#000000" size=3>

HTML

opendir(DIR, $yasnippet_dir) or die $!;

while (my $yasnippet_selected_file = readdir(DIR)) {

  next if ($yasnippet_selected_file =~ m/^\.|exclude-filename\.txt/);

  next unless (-f "$yasnippet_dir/$yasnippet_selected_file");

  next unless ($yasnippet_selected_file =~ m/\.txt|.el|.yasnippet$/);

  print '<a href="/cgi-bin/code-snippet.cgi?selected-file-yasnippet=' . $yasnippet_selected_file . '">' . $yasnippet_selected_file . "</a>" . "<br>\n<br>" . "\n\n"; }

closedir(DIR);

if ($selected_file_yasnippet) {

  open (DATA, $yasnippet_selected_file) or return $self->print_json_error($self->language('ERR_CANNOT_OPEN', $yasnippet_selected_file->{selected-file-yasnippet}, $!));

  read (DATA, my $yasnippet_selected_file, -s DATA);

  close DATA;

  print '</td><td rowspan="1" width="75%"><font face="verdana,arial,helvetica" color="#000000" size=3>';

  print '<pre class="brush:  lisp">' . "\n\n" . $yasnippet_selected_file . "\n" . '</pre>';

  print "\n\n<br>\n";

  close FILE; }

print <<HTML;

</font>

</td>
</tr>
</table>

</td>
</tr>
</table>

</td>
</tr>
</table>

<!-- end of cream color table -->
<!-- end of red border table -->

<hr COLOR="#CCCCCC" size=1 NOSHADE>

HTML

# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
# forms

print <<HTML;

<table bgcolor="#990066" width="100%" cellspacing=0 cellpadding=6 border=0>
<tr>
<td>
<table width="100%" bgcolor="#FFFFCC" cellspacing=0 cellpadding=10 border=0>
<tr>
<td>

<table width="100%" bgcolor="#000000" cellpadding=2>
<tr>
<td align=center>
<table width="100%" border=0 cellpadding=0 cellspacing=0>
<tr>
<td bgcolor="#990066" HEIGHT=25 align=center><font face="verdana,arial,helvetica" COLOR="#FFFFFF" size=3><b>Forms -- Code Snippets</b></font></td>
</tr>
</table>
</td>
</tr>
</table>

<br>

<table width="100%" border=0 cellspacing=0 cellpadding=2>
<tr>
<td rowspan="1" width="25%"><font face="verdana,arial,helvetica" color="#000000" size=3>

HTML

opendir(DIR, $form_dir) or die $!;

while (my $form_selected_file = readdir(DIR)) {

  next if ($form_selected_file =~ m/^\.|exclude-filename\.txt/);

  next unless (-f "$form_dir/$form_selected_file");

  next unless ($form_selected_file =~ m/\.txt|.el|.yasnippet$/);

  print '<a href="/cgi-bin/code-snippet.cgi?selected-file-form=' . $form_selected_file . '&#form_anchor' . '">' . $form_selected_file . "</a>" . "<br>\n<br>" . "\n\n"; }

closedir(DIR);

if ($selected_file_form) {

  open (DATA, $form_selected_file) or return $self->print_json_error($self->language('ERR_CANNOT_OPEN', $form_selected_file->{selected-file-form}, $!));

  read (DATA, my $form_selected_file, -s DATA);

  close DATA;

  print '</td><td rowspan="1" width="75%"><font face="verdana,arial,helvetica" color="#000000" size=3>';

  print '<a name="form_anchor"></a>';

  print '<pre class="brush:  lisp">' . "\n\n" . $form_selected_file . "\n" . '</pre>';

  print "\n\n<br>\n";

  close FILE; }

print <<HTML;

</font>

</td>
</tr>
</table>

</td>
</tr>
</table>

</td>
</tr>
</table>

<!-- end of cream color table -->
<!-- end of red border table -->

HTML



# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  open(FILE,'/home/lawlist/www/footer.include.shtml') and print <FILE>;


exit 0;