阅读:4106回复:12
标签页右键复制失效求教
下面的一段_addmenu.js标签页右键代码失效,在标签页右键可以显示,但是点击后不能实现相应选择,例如“复制当前标签标题”等,请@lonely_8 帮忙看看,怎么修改可以正常使用,万分感谢!!!
浏览器版本91ESR addMenuPlus.uc.js代码如下: function convert(str) { switch (str) { case "%T" : return bw.contentTitle; case "%TITLE%" : return bw.contentTitle; case "%TITLES%" : return bw.contentTitle.replace(/\s-\s.*/i, "").replace(/_[^\[\]【】]+$/, ""); case "%U" : return bw.documentURI.spec; case "%URL%" : return bw.documentURI.spec; case "%H" : return bw.documentURI.spec; case "%HOST%" : return bw.documentURI.spec; case "%S" : return context.textSelected || ""; case "%SEL%" : return context.textSelected || ""; case "%L" : return context.linkURL || ""; case "%RLINK%" : return context.linkURL || ""; case "%RLINK_HOST%" : return context.link.host || ""; case "%RLINK_TEXT%" : return context.linkText() || ""; case "%RLINK_OR_URL%": return context.linkURL || bw.documentURI.spec; case "%RLT_OR_UT%" : return context.onLink && context.linkText() || bw.contentTitle; // 链接文本或网页标题 case "%IMAGE_ALT%" : return context.target.alt || ""; case "%IMAGE_TITLE%" : return context.target.title || ""; case "%I" : return context.imageURL || ""; case "%IMAGE_URL%" : return context.imageURL || ""; case "%IMAGE_BASE64%": return img2base64(context.imageURL); case "%M" : return context.mediaURL || ""; case "%MEDIA_URL%" : return context.mediaURL || ""; case "%P" : return readFromClipboard() || ""; case "%CLIPBOARD%" : return readFromClipboard() || ""; case "%FAVICON%" : return gBrowser.getIcon(tab ? tab : null) || ""; case "%FAVICON_BASE64%" : return img2base64(gBrowser.getIcon(tab ? tab : null)); case "%EMAIL%" : return getEmailAddress() || ""; case "%EOL%" : return "\r\n"; } return str; }_addmenu.js代码如下: //标签页右键菜单 new function () { var items = [ { label:"复制当前标签标题", oncommand: function() {addMenu.copy(addMenu.convertText("%TITLES%"));}, image:"" }, { label:"复制当前标签地址", oncommand: function() {addMenu.copy(addMenu.convertText("%URL%"));}, image:"" }, { label:"复制当前标签标题和地址", oncommand: function() {addMenu.copy(addMenu.convertText("%TITLES%\n%URL%"));}, image:"" }, {}, { label:"复制所有标签标题", oncommand: function() {(function(){ var gClipboardHelper = Components.classes['@mozilla.org/widget/clipboardhelper;1'].getService(Components.interfaces.nsIClipboardHelper); var titles = ""; Array.slice(gBrowser.tabContainer.childNodes).forEach(function(tab) { titles += tab.label + "\n"; }); gClipboardHelper.copyString(titles); })();}, image:"" }, { label:"复制所有标签地址", oncommand: function() {(function(){ var gClipboardHelper = Components.classes['@mozilla.org/widget/clipboardhelper;1'].getService(Components.interfaces.nsIClipboardHelper); var URLs = ""; Array.slice(gBrowser.tabContainer.childNodes).forEach(function(tab) { var url = gBrowser.getBrowserForTab(tab).currentURI.spec; URLs += url + "\n"; }); gClipboardHelper.copyString(URLs); })();}, image:"" }, { label:"复制所有标签标题和地址", oncommand: function() {(function() { var gClipboardHelper = Components.classes['@mozilla.org/widget/clipboardhelper;1'].getService(Components.interfaces.nsIClipboardHelper); var txt = ""; Array.slice(gBrowser.tabContainer.childNodes).forEach(function(tab) { var url = gBrowser.getBrowserForTab(tab).currentURI.spec; txt += tab.label + "\n" + url + "\n"; }); gClipboardHelper.copyString(txt); })();}, image:"" }, ]; var menu = TabMenu( { label:"标签页右键菜单", id:"context_TabInfoCopy",onpopupshowing: syncHidden}); image:"", menu(items); }; |
|
1楼#
发布于:2021-08-23 10:24
我这里是将addMenuPlus.uc.js这个文件的第885、887、889行return后面的的bw替换成gBrowser就可以了,但是缺点就在它只能复制当前页面的标题
function convert(str) { switch (str) { case "%T" : return gBrowser.contentTitle; case "%TITLE%" : return gBrowser.contentTitle; case "%TITLES%" : return gBrowser.contentTitle.replace(/\s-\s.*/i, "").replace(/_[^\[\]【】]+$/, ""); |
|
2楼#
发布于:2021-08-23 10:49
|
|
3楼#
发布于:2021-08-23 12:49
以前帮人改过,现在还没失效
https://paste.ubuntu.com/p/fF9pnvmvxK/ _addmenu.js 参考 https://www.firefox.net.cn/read-121198 |
|
4楼#
发布于:2021-08-23 14:02
lonely_8:以前帮人改过,现在还没失效非常感谢,按照修改后可以正常使用, |
|
5楼#
发布于:2021-08-24 00:42
复制当前标签都能用,但复制所有标签的功能(比如复制所有标签标题、复制所有标签地址、复制所有标签标题和地址等)都不能用。
你们的能用吗? 脚本用的是3楼的代码,配置文件用的是http://controlc.com/44d7a8d2 |
|
6楼#
发布于:2021-08-24 10:13
kidzgy:复制当前标签都能用,但复制所有标签的功能(比如复制所有标签标题、复制所有标签地址、复制所有标签标题和地址等)都不能用。按照3楼的脚本,可以正常使用 |
|
7楼#
发布于:2021-08-24 11:25
我重新试了下,用的脚本和配置文件都是3楼的,红线框内的4个功能都没有效果,其他有效果。 |
|
8楼#
发布于:2021-08-24 16:04
|
|
9楼#
发布于:2021-08-24 18:39
|
|
10楼#
发布于:2021-08-25 03:55
还是有问题,标签右键是能正常用了,但是在页面空白处右键,菜单倒是不见了。
我从RunningCheese处淘到一脚本,这个脚本倒是不会出现菜单不见的问题,不过却有另外的问题,就是复制标签图标的BASE64或是页面图像的BASE64,都会让FF陷入一个假死状态。正常的关闭火狐,虽然火狐看起来是关了,但是后台还保留着进程,必须用任务管理器结束进程才能重新打开火狐。 它的脚本是这样的:https://pastebin.ubuntu.com/p/Nkwnq4jB4J/ 我的配置文件:https://pastebin.ubuntu.com/p/ywvz9sS8jj/ 搞最后发现我本身初始的脚本就能正常使用了,就是不用3楼的,也不用RunningCheese的,而是https://pastebin.ubuntu.com/p/hphJJZXBWh/ |
|
11楼#
发布于:2021-08-25 09:30
kidzgy:还是有问题,标签右键是能正常用了,但是在页面空白处右键,菜单倒是不见了。3楼的脚本,删除下面的代码就不会有你说的情况 break; case "popuphiding": if (event.target.id == 'contentAreaContextMenu') { event.target.querySelectorAll(':scope > .addMenu').forEach(m => { m.hidden = true; }); }我也是瞎比对后发现 |
|
12楼#
发布于:2021-08-25 11:10
|
|