是否可以在外部javascript代码(例如,用户脚本通过篡改猴子)中运行Chrome控制台上的代码片段。例如,console.log将文本打印到控制台。是否有某种方式,比如函数console.eval,或者更复杂的方式,可以在控制台上运行代码而不需要在给定的网站上手动打开它,但是使用网站后面的原始javascript代码或用户脚本呢?
注:我在Windows 10上使用谷歌Chrome。最好这个答案应该尽可能地适用,但我的首要任务是在我的环境中工作。
谢谢,
麦克
发布于 2021-02-12 12:42:35
英国,当我说if the page is reloading constantly, the "console" that u think of would also reload??的时候,我们很多人都知道我在下面做什么(如果不是所有人的话),但是我终于把它和你的问题联系起来了。使用一个选项卡来控制另一个选项卡
ONE编辑:我使用interval来确定被控制的选项卡是否是关闭的(因为如果该选项卡为关闭,则最终会更改该值,以获得良好的)
如何使用
例如:在"https://example.com/404“上打开一个选项卡(如果需要的话)是"https://example.com”是我下面的代码片段中所需的url (不断重新加载)
loadFn函数中,其中myWindow和this指向受控选项卡的< code >D23例如:在loadFn函数中,myWindow.console.log(1)或this.console.log(1)都会将1记录到受控选项卡的控制台
第二编辑:我将解释它是如何工作的(并根据您在评论中的要求谈论unloadFn )
我使用unload和load侦听的组合,以便能够反复发送代码"on reload",这本身并不是一个事件,所以我不得不创建它。如果我没有解释我自己,我现在就详细讲..
当一个页面正在重新加载时(或者当我是时,只是生成页面,例如:var myWindow=window.open(desiredUrl)),unload事件就会发生。不过,只有一个问题,;每次页面重新加载时,所有事件侦听器和您所放的任何代码都会被删除(因为重新加载到,然后重新加载)
解决方案很简单:在每个unload上,我再次设置了列表程序,并且由于该函数将调用自己(每次页面卸载时),每次页面重新加载时都会成功地重新加载侦听器(这就是为什么每次重新加载后loadFn可以在其他选项卡中运行)。
确实注意到了:您可能会问:“为什么要使用setTimeout呢?”实际上,这是,非常重要的。如果没有setTimeout,事件侦听器就不会添加,我认为这是因为选项卡将忽略您的命令(因为它将专注于加载其默认内容(例如,事件侦听器),而asynchronous programming在本例中会执行奇迹,因为它将等待其他东西被处理(比如事件处理材料),然后运行。
SIDE注意到:如果这不是setTimeout工作而不使用它的原因,我所知道的就是没有它,它就不能工作,而使用它,它就能工作
var myWindow=window.open(desiredUrl) //remember to run this code on the same origin as the desiredUrl
function loadFn(){
  //this will happen every time myWindow loads or reloads
  myWindow.alert("It runs in the controlled tab")
  myWindow.console.log("Even in the controlled tab's console it works >:D")
}
function unloadFn(){setTimeout(()=>{
  myWindow.addEventListener('unload',unloadFn)
  myWindow.addEventListener('load',loadFn)
  if(!myWindow.Window){console.warn("myWindow was CLOSED")}
},0)}
myWindow.addEventListener('unload',unloadFn)
//extra thing below to tell if controlled tab is closed >:D
var i=setInterval(()=>{
  //for if controlled tab is closed
  if(!myWindow.document.location){clearInterval(i);console.warn("myWindow was CLOSED")}
},0)https://stackoverflow.com/questions/66018437
复制相似问题