最近因为需要做copy搬运工作,所以想直接搬运百度文库的内容,网上试了百度翻译法等( www.zhihu.com/question/33… ),发现复制太多次了好像就失效了,555,还是得动一下脑子,用前端的法子来~
首先,得让控制台输出内容。
F12打开开发者工具,在控制台用console.log("test");尝试输出字符串test,后来发现百度文库这个网页已经覆盖掉console对象了,无法输出东西。
一些项目中会使用类似如下的方式覆盖掉console对象:
var console = {};
console.log = function(){};
console.info = function(){};
window.console = console;
百度之后发现可以新建< iframe >元素,它会创建包含另外一个文档的内联框架(即行内框架),接着通过iframe.contentWindow获取iframe的window对象,从而获取console恢复其功能。
(function(){
var iframe = document.createElement('iframe')
document.body.appendChild(iframe)
window.console = iframe.contentWindow.console
}())
作者:moonshell
链接:www.zhihu.com/question/28…
来源:知乎
在控制台输入这段代码后,发现可以输出东西啦。
下面给个栗子
思路:为了输出想要的内容,我们要先找到所有文本,用开发者工具你会发现他们都有同个类名,也就是我们要拿到具有相同这个类名的所有dom结点。拿到dom结点之后,我们是想要dom结点里面的文本,所以其实也就是循环然后把用innerText把文本内容输出来。
操作:先用开发者工具,点击下面的图标,然后再点击页面所需要复制的文本内容,找到他们的共同类名,如下图所示:
// 根据类名(你刚才找到的)获取全部所需内容的dom结点
var textTag = document.getElementsByClassName("reader-word-layer");
// 循环输出
var text;
for(let i = 0; i < textTag.length; i++){
text += textTag[i].innerText;
}
console.log(text);