发表回复 
在任意浏览器实现左右键翻页
2017-04-10, 00 : 27 (这个帖子最后修改于: 2017-04-11 23 : 43 by feiyue.)
Heart 在任意浏览器实现左右键翻页
小技巧:将任意网址添加到收藏夹,然后改变这个收藏夹标签,
名字改为“下一页 &n”(或“上一页 &p”),网址改为下面的js
代码,再利用AHK热键启动收藏夹菜单中的这个标签,就可以
在任意浏览器实现左右键翻页功能了。


收藏夹标签“下一页”的网址js代码:
代码: (全选)
javascript:try{var Re=new RegExp("(下|后)(一|\s)*(页|頁|章|篇|翻)","i"); var a=document.getElementsByTagName("A"); for (var i=0;i<a.length;i++){if (Re.test(a[i].innerHTML)){if (a[i].href.substr(0,11).toLowerCase()=="javascript:") a[i].click(); else document.location.href=a[i].href;break;}}} catch (e){}

收藏夹标签“上一页”的网址js代码:
代码: (全选)
javascript:try{var Re=new RegExp("(上|前)(一|\s)*(页|頁|章|篇|翻)","i"); var a=document.getElementsByTagName("A"); for (var i=0;i<a.length;i++){if (Re.test(a[i].innerHTML)){if (a[i].href.substr(0,11).toLowerCase()=="javascript:") a[i].click(); else document.location.href=a[i].href;break;}}} catch (e){}

AHK热键启动收藏夹菜单标签的代码(以360浏览器为例,其他浏览器需要修改):
代码: (全选)
#If WinActive("ahk_class 360se6_Frame") and (A_Cursor!="IBeam")

Right::
Send {Alt Down}b{Alt Up}
Sleep, 200
Send n      ;//若不能设快捷键,可以把标签放在最后,使用 Send {Up}{Enter}
Return

Left::
Send {Alt Down}b{Alt Up}
Sleep, 200
Send p      ;//若不能设快捷键,可以把标签放在倒数第二,使用 Send {Up 2}{Enter}
Return

#If
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 2用户表示感谢feiyue
2017-04-10, 10 : 13
RE: 在任意浏览器实现左右键翻页
跨浏览器的话,用这个很好,谢feiyue兄分享!Smile

主浏览器仅一个的话,如Chorme或Firefox,用专门扩展/脚本更方便。
原因:
  • 按键都省略了,向下浏览的过程中,自动在恰当时候,于当前页加载下一页内容(如果想在某帖子范围内搜索,直接立即加载几十页,按Ctrl-F搜索即可)
  • 相当多的网页,没有(下|后)(一|\s)*(页|頁|章|篇|翻) 等正则式来标识按钮位置,对于这种情况:
    1. 脚本内置了常用网站的规则库:新浪、腾讯、Discuz通用论坛等,现成的
    2. 对于规则库没有的网站,可自己添加规则(基于xpath或css)
  • 其它一些有用功能。参见截图
Chrome有Super_preloaderPlus_one、autopagerize等脚本,Firefox有uAutoPagerize2脚本。

菜单按钮(Firefox):
[Image: 2017_04_10_20170410095948.png]

GIF动图(3.2M)
[Image: 0060lm7Tgy1fehcwqb15qg30ll0eie83.gif]
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 3用户表示感谢bootislands1
2017-04-10, 18 : 41
RE: 在任意浏览器实现左右键翻页
感谢两位,看某些小说网站,不能翻页很痛苦。
先赞一下,再测试。

尊重原创,分享快乐
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-04-10, 19 : 01 (这个帖子最后修改于: 2017-04-10 19 : 03 by robertL.)
RE: 在任意浏览器实现左右键翻页
@feiyue 被这方法惊呆了!赞。
("(下|后)(一|\s)*(页|頁|章|篇|翻)中,可以改为(一?|\s*)吧?

@bootislands1 看图,体验很好!谢谢分享。
如果能再智能点——依据网页加载速度、鼠标滚动速度,自动提前加载,就无缝连接了!

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-04-10, 19 : 21
RE: 在任意浏览器实现左右键翻页
@robertL 有 提前预读下一页 的选项(图1的提示),是无缝连接,提前加载的
为了录制GIF,专门关掉这个选项了,以便演示加载的过程
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-04-10, 19 : 26
RE: 在任意浏览器实现左右键翻页
(2017-04-10 19 : 21)bootislands1 提到:  @robertL 有 提前预读下一页 的选项(图1的提示),是无缝连接,提前加载的
为了录制GIF,专门关掉这个选项了,以便演示加载的过程
哈哈,原来如此。
不过这是自动,比智能还差一点点Big Grin

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-04-11, 22 : 02 (这个帖子最后修改于: 2017-04-11 22 : 15 by robertL.)
RE:新方式
突然想起,用发送或者剪贴板直接传输至地址栏(Alt+D、F4,如果浏览器可以指定激活地址栏的快捷键就更好了)也可以吧?
因为作为链接添加到收藏夹,游览器不一定支持为其添加快捷键呢。
自@aamii 的启发。

我搜狗、IE是Alt+D-激活地址栏(可能我改过);F4会展开地址栏(适用于Windows资源管理器)。


或者,浏览器命令行参数打开网址?

One for all, but man for himself

帮推广:AHK知乎专栏
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢robertL
2017-04-11, 23 : 40 (这个帖子最后修改于: 2017-05-30 21 : 48 by feiyue.)
RE: 在任意浏览器实现左右键翻页
(2017-04-11 22 : 02)robertL 提到:  突然想起,用发送或者剪贴板直接传输至地址栏(Alt+D、F4,如果浏览器可以指定激活地址栏的快捷键就更好了)也可以吧?

好方法!确实从地址栏运行js代码与点击收藏夹标签运行js代码是一样的,这样还简单一些。改进的热键代码如下:

代码: (全选)
;------------------------------------
;  任意浏览器中左右键翻页  By FeiYue
;------------------------------------

SetTitleMatchMode, 2  ;//匹配部分标题
GroupAdd, MyBrowser, ahk_class IEFrame
GroupAdd, MyBrowser, 360安全浏览器
GroupAdd, MyBrowser, 360极速浏览器
GroupAdd, MyBrowser, 搜狗高速浏览器
GroupAdd, MyBrowser, 世界之窗浏览器
GroupAdd, MyBrowser, 2345加速浏览器
GroupAdd, MyBrowser, GreenBrowser

tip=`n  【F12】是浏览器中左右键翻页的开关  `n
Menu, Tray, Tip, %tip%
TrayTip,, %tip%
Return


*F12::
Left_Right_On := !Left_Right_On
TrayTip,, % "左右键翻页已" . (Left_Right_On ? "打开!":"关闭!")
Return


#If (Left_Right_On) and WinActive("ahk_group MyBrowser")

$Right::  ;//下一页
$Left::   ;//上一页
js=
(LTrim Join
javascript:try{var Re=new RegExp("(下|后)(一|\s)*(页|頁|章|篇|翻)","i"); var a=document.getElementsByTagName("A"); for (var i=0;i<a.length;i++){if (Re.test(a[i].innerHTML)){if (a[i].href.substr(0,11).toLowerCase()=="javascript:") a[i].click(); else document.location.href=a[i].href;break;}}} catch (e){}
)
if InStr(A_ThisLabel,"Left")
  js:=StrReplace(js,"下|后","上|前")
Send {Alt Down}d{Alt Up}
Sleep, 50
;//地址栏直接粘贴“javascript:”会被某些浏览器屏蔽
Clipboard:="j" . js
Send {Ctrl Down}v{Ctrl Up}
Send {Home}{Shift Down}{Right}{Shift Up}
Send {Ctrl Down}x{Ctrl Up}
Sleep, 50
if (Clipboard="j")
  Send {Enter}
KeyWait, % SubStr(A_ThisLabel,2)
Return

#If
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合