我想要一个解决方案,允许我复制 ISBN 列的内容维基百科表格使用键盘快捷键逐个复制到剪贴板。我安装了 AutoHotKey(与此问题无关),如果这有帮助的话。谢谢。
答案1
编辑:看直接将 ISBN 复制到剪贴板以下是新代码。
基于这个答案。
显示复制提示
您可以使用以下 JavaScript 代码:
var textIndex = 0;
jQuery("table.wikitable:nth-child(9)").after("<button type='button' onclick='copyText()'>Get Next ISBN</button>");
function copyText() {
window.prompt("Copy to clipboard: Ctrl+C, Enter", jQuery("table.wikitable:nth-child(9) tr td:nth-of-type(4) a").eq(textIndex).text() );
textIndex++;
}
它在表格底部创建一个按钮。
每一次,
- 通过 Tab 切换到网页(例如使用Alt+Tab或Ctrl+ Tab)。
- 点击按钮。出现提示。
- 按Ctrl+ C。
- 按下Enter关闭提示。
它不是最有效的,但它确实有效。
要使用此代码:
- 打开浏览器的控制台,例如按F12。
Console
如果尚未选择该选项卡,请导航至该选项卡。- 将其粘贴到框中。
- 按Enter。
直接将 ISBN 复制到剪贴板
新代码在单击按钮时复制 ISBN,从而减少了步骤数。(var textIndex = 0;
如果您不想丢失位置,请省略该行。)但它只在某些浏览器中有效;我在 Chrome 45.0.2454.85 上进行了测试。根据链接答案,它应该可以在 Google Chrome 44、Firefox 42.0a1 和 IE 11.0.8600.17814 上运行。
function copyTextToClipboard(text) {
var textArea = document.createElement("textarea");
//
// *** This styling is an extra step which is likely not required. ***
//
// Why is it here? To ensure:
// 1. the element is able to have focus and selection.
// 2. if element was to flash render it has minimal visual impact.
// 3. less flakyness with selection and copying which **might** occur if
// the textarea element is not visible.
//
// The likelihood is the element won't even render, not even a flash,
// so some of these are just precautions. However in IE the element
// is visible whilst the popup box asking the user for permission for
// the web page to copy to the clipboard.
//
// Place in top-left corner of screen regardless of scroll position.
textArea.style.position = 'fixed';
textArea.style.top = 0;
textArea.style.left = 0;
// Ensure it has a small width and height. Setting to 1px / 1em
// doesn't work as this gives a negative w/h on some browsers.
textArea.style.width = '2em';
textArea.style.height = '2em';
// We don't need padding, reducing the size if it does flash render.
textArea.style.padding = 0;
// Clean up any borders.
textArea.style.border = 'none';
textArea.style.outline = 'none';
textArea.style.boxShadow = 'none';
// Avoid flash of white box if rendered for any reason.
textArea.style.background = 'transparent';
textArea.value = text;
document.body.appendChild(textArea);
textArea.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'successful' : 'unsuccessful';
console.log('Copying text command was ' + msg);
} catch (err) {
console.log('Oops, unable to copy');
}
document.body.removeChild(textArea);
}
var textIndex = 0;
jQuery('table.wikitable:nth-child(9)').after('<button type="button" onclick="copyISBN()">Get Next ISBN</button>');
function copyISBN() {
copyTextToClipboard(jQuery('table.wikitable:nth-child(9) tr td:nth-of-type(4) a').eq(textIndex).text());
textIndex++;
}
每一次,
- 通过 Tab 切换到网页(例如使用Alt+Tab或Ctrl+ Tab)。
- 单击按钮,或按Space按钮(如果按钮已经聚焦)。ISBN 会自动复制到剪贴板。
它不能通过快捷键工作,但至少它可以为您复制。