常见的国产浏览器基本上都支持的两个功能,一个是双击标签关闭,一个是地址栏打开新标签,我以前不愿意转到edge主要就是这两个问题
现在看了下,最新版的edge已经支持双击标签关闭了,但地址栏新标签这个仍然没有解决,而且也没有查到有插件之类的方式可以解决,chrome还可以用chrome++来实现,edge好像也不行,大家有好的解决办法吗?
没有使用过 Edge ,但是在 Firefox 和 Chrome 中,直接按 Alt-Enter 就是在新标签页打开链接了,你可以试一下
edge默认是用shift+enter,但我希望能够直接enter就在新标签栏打开,或者至少给我一个可以选择的选项
这样呀,那我就不清楚了,我好像都是使用默认的快捷键,从没改动的想法
Edge那么多快捷键不用吗?
Win + W
键关闭当前标签页
Win + T
键新建标签页
Win + R
键刷新当前标签页
Ctrl + Shift + S
键来可以截整个网页的屏
Edge Alt+Enter 是新标签页打开,Shift+Enter 是新窗口打开。
但是想做到 Enter 默认新标签页打开那就知识盲区了。
就是因为不想改变使用习惯啊
我觉得可以用这个autohotkey脚本进行一定的修改来实现:
考虑到一般而言,在浏览器里按下{enter}键,基本上都是在编辑框中。
因此,只需要在按下{enter}时,获取当前 “编辑光标” 的坐标位置,进行判定,
如果编辑光标的位置处于地址栏处,则拦截{enter}改为发送Alt+Enter,否则还是发送{enter}
#Persistent
SetTimer,GetC,200
Return
GetC:
if !GetCaretPos(x, y)
ToolTip, Cant recognize caret position
else {
CoordMode, Mouse
tooltip,% x " " y
}
Return
GetCaretPos(ByRef x, ByRef y) {
static OBJID_CARET := 0xFFFFFFF8
CoordMode, Caret
if (A_CaretX != "" && A_CaretY != "")
x := A_CaretX, y := A_CaretY
else {
AccObject := AccObjectFromWindow(WinExist("A"), OBJID_CARET)
Pos := AccLocation(AccObject)
x := Pos.x, y := Pos.y
}
Return x && y
}
AccObjectFromWindow(hWnd, idObject = 0) {
static IID_IDispatch := "{00020400-0000-0000-C000-000000000046}"
, IID_IAccessible := "{618736E0-3C3D-11CF-810C-00AA00389B71}"
, OBJID_NATIVEOM := 0xFFFFFFF0, VT_DISPATCH := 9, F_OWNVALUE := 1
, h := DllCall("LoadLibrary", "Str", "oleacc", "Ptr")
VarSetCapacity(IID, 16), idObject &= 0xFFFFFFFF, AccObject := 0
DllCall("ole32\CLSIDFromString", "Str", idObject = OBJID_NATIVEOM ? IID_IDispatch : IID_IAccessible, "Ptr", &IID)
if DllCall("oleacc\AccessibleObjectFromWindow", "Ptr", hWnd, "UInt", idObject, "Ptr", &IID, "PtrP", pAcc) = 0
AccObject := ComObject(VT_DISPATCH, pAcc, F_OWNVALUE)
Return AccObject
}
AccLocation(Acc, ChildId := 0, ByRef Position := "") {
static type := (VT_BYREF := 0x4000) | (VT_I4 := 3)
try Acc.accLocation( ComObject(type, &x := 0), ComObject(type, &y := 0)
, ComObject(type, &w := 0), ComObject(type, &h := 0), ChildId )
catch
Return
_x := NumGet(x, "int"), _y := NumGet(y, "int"), _w = NumGet(w, "int"), _h := NumGet(h, "int")
Position := "x" . _x . " y" . _y . " w" . _w . " h" . _h
Return {x: _x, y: _y, w: _w, h: _h}
}
我非得用 Edoge 的时候,就记住新建了标签页再在地址栏输入,要么鼠标点,要么 Ctrl - T 再 Alt - D ……
反正既然 Edge 不给我选择,我也不选择 Edge 。
——
说句暴论,我觉得“地址栏输入后要组合键而不是一键在新标签页打开”这种强制设计,就是PUA使用者,“要么给我多花点时间按快捷键,要么忘掉刚刚的页面,这样我就不用费心思去优化内存占用,还可以把那不知好歹的Firefox羞辱一通!”
搞定!运行exe或ahk即可。
下载地址:
autohotkey代码:
#Persistent
; Define global variables
state := 0
; Set a timer to call the getstate function every 100ms
SetTimer, getstate, 100
return
#If state
$enter::
Send !{enter}
return
#if
getstate:
if WinActive("ahk_exe msedge.exe")
{
if !GetCaretPos(x, y, w, h)
state:=0
else {
WinGetPos,,yy
y:=y-yy
y:=y*(96/A_ScreenDPI)
if (y < 72)
state:=1
}
}else{
state:=0
}
;ToolTip,% state " " x " " y " " w " " h
return
GetCaretPos(ByRef x, ByRef y, ByRef w, ByRef h) {
static OBJID_CARET := 0xFFFFFFF8
CoordMode, Caret
if (A_CaretX != "" && A_CaretY != "")
x := A_CaretX, y := A_CaretY
else {
AccObject := AccObjectFromWindow(WinExist("A"), OBJID_CARET)
Pos := AccLocation(AccObject)
x := Pos.x, y := Pos.y, w := Pos.w ,h:=pos.h
}
return x && y && w && h
}
AccObjectFromWindow(hWnd, idObject = 0) {
static IID_IDispatch := "{00020400-0000-0000-C000-000000000046}"
, IID_IAccessible := "{618736E0-3C3D-11CF-810C-00AA00389B71}"
, OBJID_NATIVEOM := 0xFFFFFFF0, VT_DISPATCH := 9, F_OWNVALUE := 1
, h := DllCall("LoadLibrary", "Str", "oleacc", "Ptr")
VarSetCapacity(IID, 16), idObject &= 0xFFFFFFFF, AccObject := 0
DllCall("ole32\CLSIDFromString", "Str", idObject = OBJID_NATIVEOM ? IID_IDispatch : IID_IAccessible, "Ptr", &IID)
if DllCall("oleacc\AccessibleObjectFromWindow", "Ptr", hWnd, "UInt", idObject, "Ptr", &IID, "PtrP", pAcc) = 0
AccObject := ComObject(VT_DISPATCH, pAcc, F_OWNVALUE)
return AccObject
}
AccLocation(Acc, ChildId := 0, ByRef Position := "") {
static type := (VT_BYREF := 0x4000) | (VT_I4 := 3)
try Acc.AccLocation( ComObject(type, &x := 0), ComObject(type, &y := 0)
, ComObject(type, &w := 0), ComObject(type, &h := 0), ChildId )
catch
return
_x := NumGet(x, "int"), _y := NumGet(y, "int"), _w = NumGet(w, "int"), _h := NumGet(h, "int")
Position := "x" . _x . " y" . _y . " w" . _w . " h" . _h
return {x: _x, y: _y, w: _w, h: _h}
}
你试试,好用的话,记得点个解决方案哈~
感谢,我尝试一下
- 采用转发中键关闭标签方式,效率更高,保留基本功能,去除冗余功能
- 小键盘回车采用第二搜索引擎(在地址栏中输入关键词,如果直接按小键盘上面的回车键,将采用第二搜索引擎进行搜索,该搜索引擎可以在配置文件中自定义)
- 地址栏全角字符自动转换功能::转换成: 、转换成/
- 修复垂直标签状态下面当有固定标签时,右击关闭标签功能失效的bug
- 右键标题栏打开新标签
- 地址栏回车新开tab打开网页
- 右键关闭标签页
- 按住右键时滚轮滚动标签栏
- 同时支持Edge(版本 128.0.2739.42 (正式版本) (64 位))、Chrome(版本 128.0.6613.114(正式版本) (64 位))
RunningCheese Edge 131.0 稳定版 - 奔跑中的奶酪
定制版 Chrome 浏览器默认使用 GreenChrome增强插件,所以书签和链接的默认打开方式修改成了在新标签页 打开。但这有副作用,这导致无法使用书签栏里的“小书签”,需要取消勾选“处理弹出菜单”。
这个似乎不行,它只解决了“书签和链接”,而不是地址栏
兄弟,你这个才是完美解决方案,真心赞美你