Javascript Google Chrome调用JS脚本控制台?

Javascript Google Chrome调用JS脚本控制台?,javascript,google-chrome,debugging,console,reddit,Javascript,Google Chrome,Debugging,Console,Reddit,我正在尝试基本上,这里要做的是: 只是以另一种我无法发现的方式 在reddit.com上,我正在尝试删除该按钮,并尝试重新设计按钮。如果您在reddit.com中使用Google Chrome时使用F12,您应该能够看到应用程序,您可以单击该应用程序,然后转到脚本并使用CTRL+F搜索OptIn。然后您可以找到代码,我将在这里输入部分代码 function f() { a("redesignbanner", "click", "r2banner_dismiss")

我正在尝试基本上,这里要做的是:

只是以另一种我无法发现的方式

在reddit.com上,我正在尝试删除该按钮,并尝试重新设计按钮。如果您在reddit.com中使用Google Chrome时使用F12,您应该能够看到应用程序,您可以单击该应用程序,然后转到脚本并使用CTRL+F搜索OptIn。然后您可以找到代码,我将在这里输入部分代码

    function f() {
        a("redesignbanner", "click", "r2banner_dismiss")
    }
这个

还有这个

        initBanner: function() {
            var n = $(".redesignbetabar");
            if (!n.length)
                return;
            $("#redesign-beta-optin").on("click", function() {
                e.actions.trigger("onboarding:redesignbetabarClickOptIn"),
                t(function() {
                    e.onboardingBar.setDismissed(n.data(), !0),
                    window.location.reload(!0)
                }, function(t, n, i) {
                    e.warn("Error opting in to redesign", n, ";", i)
                })
            })
        }
你看到e.onboardingBar.setDisabled(n.data(),!0)了吗?基本上,我也试着运行这个,但我不知道如何运行

我的意思是移除右上角的按钮,看起来像这样

如果你不知道如何得到那个按钮,我会设法找出如何得到它

您进入右上角的reddit帐户设置>向下滚动并选中,使用重新设计作为我的默认体验>然后单击保存


然后你再次进入设置,或者如果你仍然在那里,只需取消选中它,按钮就会出现,这很烦人,我无法摆脱它,似乎我以前没有遇到过这个问题,其他人也有,但不是全部,这很奇怪。

因为Reddit在匿名函数中包装了几乎所有的JavaScript代码,您无法访问其中定义的变量和函数。例如,请参见以下代码:

(function() {
  var x = 2;
})();
除了匿名函数内部,变量x不能从任何地方访问,而且由于该函数没有名称,因此无法引用它或访问其中的任何内容

Reddit对他们的代码做了同样的事情,这意味着你不能调用任何这些方法。但是,还有另一种使用CSS隐藏按钮的方法。该按钮具有“重新设计beta optin”类,因此以下CSS将隐藏该按钮:

.redesign-beta-optin { display: none }
这可以通过JavaScript实现,如下所示:

document.getElementsByClassName("redesign-beta-optin")[0].style.display = "none"
编辑

要永久删除该按钮,您可以使用Chrome扩展,例如或,它允许您在某些网页上运行JavaScript和CSS

要使用Tampermonkey执行此操作,请创建包含以下内容的用户脚本:

// ==UserScript==
// @name Reddit Redesign Button Remover
// @description  Remove reddit redesign button
// @author       kmh
// @match        https://*.reddit.com/*
// ==/UserScript==

document.getElementsByClassName("redesign-beta-optin")[0].style.display = "none";
.redesign-beta-optin { display: none }
使用style,您可以使用以下内容为域reddit.com创建新样式:

// ==UserScript==
// @name Reddit Redesign Button Remover
// @description  Remove reddit redesign button
// @author       kmh
// @match        https://*.reddit.com/*
// ==/UserScript==

document.getElementsByClassName("redesign-beta-optin")[0].style.display = "none";
.redesign-beta-optin { display: none }

如果使用Tampermonkey,您会注意到站点加载时会有一小段时间,因为初始化需要一些时间。这在Style中不会发生。

因为Reddit将几乎所有的JavaScript代码封装在匿名函数中,所以您无法访问其中定义的变量和函数。例如,请参见以下代码:

(function() {
  var x = 2;
})();
除了匿名函数内部,变量x不能从任何地方访问,而且由于该函数没有名称,因此无法引用它或访问其中的任何内容

Reddit对他们的代码做了同样的事情,这意味着你不能调用任何这些方法。但是,还有另一种使用CSS隐藏按钮的方法。该按钮具有“重新设计beta optin”类,因此以下CSS将隐藏该按钮:

.redesign-beta-optin { display: none }
这可以通过JavaScript实现,如下所示:

document.getElementsByClassName("redesign-beta-optin")[0].style.display = "none"
编辑

要永久删除该按钮,您可以使用Chrome扩展,例如或,它允许您在某些网页上运行JavaScript和CSS

要使用Tampermonkey执行此操作,请创建包含以下内容的用户脚本:

// ==UserScript==
// @name Reddit Redesign Button Remover
// @description  Remove reddit redesign button
// @author       kmh
// @match        https://*.reddit.com/*
// ==/UserScript==

document.getElementsByClassName("redesign-beta-optin")[0].style.display = "none";
.redesign-beta-optin { display: none }
使用style,您可以使用以下内容为域reddit.com创建新样式:

// ==UserScript==
// @name Reddit Redesign Button Remover
// @description  Remove reddit redesign button
// @author       kmh
// @match        https://*.reddit.com/*
// ==/UserScript==

document.getElementsByClassName("redesign-beta-optin")[0].style.display = "none";
.redesign-beta-optin { display: none }

如果使用Tampermonkey,您会注意到站点加载时会有一小段时间,因为初始化需要一些时间。Style不会出现这种情况。

看起来像是一个方法(对象中的函数),您可以通过objectname.initBanner()访问它,尽管可能有更多嵌套(我没有检查源代码)。如果一切都在$.ready内,您可以将其忘记(就像关闭一样)。即使有效,您也只能访问单击处理程序。。这会触发自定义事件。。。换句话说,这将使你一事无成。您最好使用选择器删除元素。。。ie尝试类似于
jQuery(“#header”).remove()
我试图永久删除它,但它只是暂时的,不确定google chrome缓存是如何工作的。当然,当你重新加载页面时它会回来。。。唯一能永久摆脱它的方法是,如果reddit更改了源代码,它看起来就像一个方法(对象中的函数),您可以通过objectname.initBanner()访问它,尽管可能有更多嵌套(我没有检查源代码)。如果一切都在$.ready内,您可以将其忘记(就像关闭一样)。即使有效,您也只能访问单击处理程序。。这会触发自定义事件。。。换句话说,这将使你一事无成。您最好使用选择器删除元素。。。ie尝试类似于
jQuery(“#header”).remove()
我试图永久删除它,但它只是暂时的,不确定google chrome缓存是如何工作的。当然,当你重新加载页面时它会回来。。。永久删除它的唯一方法是,如果reddit更改其源代码,[0]用于什么?document.getElementsByClassName返回一个元素数组,因为多个元素可以共享相同的类名。[0]获取数组的第一个元素,我们知道它是我们想要的元素,因为该类只有一个元素。如果在reddit上创建新帐户,它将不会显示该内容,也不确定如何显示,但如果我操作cookies,它可能会使它消失。什么是[0]for?document.getElementsByClassName返回元素数组,因为多个元素可以共享相同的类名。[0]获取数组的第一个元素,我们知道它是我们想要的元素,因为该类只有一个元素。如果在reddit上创建新帐户,它将不会显示该内容,也不确定如何显示,但如果我操作cookie,它可能会使它消失?