Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript单击所有Google Chrome“;“显示密码”;图标_Javascript_Google Chrome - Fatal编程技术网

使用Javascript单击所有Google Chrome“;“显示密码”;图标

使用Javascript单击所有Google Chrome“;“显示密码”;图标,javascript,google-chrome,Javascript,Google Chrome,在Chrome浏览器中,在设置>管理密码中: chrome://settings/passwords 存在“显示密码”图标 我必须手动单击输入字段的每个“眼睛”图标,从只读的type=“password”更改为type=“text”,并显示密码 我很好奇如何使用javascript单击所有图标,一次显示每个站点保存的所有密码 <div class="password-column"> <input id="password" aria-label="Password" c

在Chrome浏览器中,在设置>管理密码中: chrome://settings/passwords 存在“显示密码”图标

我必须手动单击输入字段的每个“眼睛”图标,从只读的
type=“password”
更改为
type=“text”
,并显示密码

我很好奇如何使用javascript单击所有图标,一次显示每个站点保存的所有密码

<div class="password-column">
  <input id="password" aria-label="Password" class="password-field" readonly=""
         type="password" disabled="">
  <paper-icon-button-light id="showPasswordButtonContainer" class="icon-visibility">
    <button id="showPasswordButton" focus-row-control="" focus-type="showPassword"
            title="Show password" tabindex="0">
      <paper-ripple class="circle"></paper-ripple>
    </button>
  </paper-icon-button-light>
  <template is="dom-if"></template>
  <span class="password-field text-elide" id="federated" hidden=""></span>
</div>
变量
按钮
null


对我来说,这更像是一个好奇的问题。我目前是一名具有良好Python背景的Javascript初学者。

您不能选择这些元素,因为它们位于阴影DOM中

您可以尝试阴影穿透子体combinator
/deep/
,尽管它的命运不确定,因为它是V0的一部分,而不是V1阴影DOM的一部分。(例如,您只能从
querySelector
中使用它,而不能从样式表中使用。)不过,Chrome暂时支持它

> document.querySelectorAll('* /deep/ button#showPasswordButton[title="Show password"]')
NodeList(41)
(过滤掉标题为“隐藏密码”的人)

通过devtoolsapi,我们还可以访问Chrome的
queryObjects
函数,该函数将在内存中查找特定类型的所有实例

> queryObjects(HTMLButtonElement)
undefined
Array(122)
<> > <代码> QueObjs<代码>有点奇怪,(中间的<代码>未定义< /代码>是一个线索),所以我们必须右击>存储为全局变量,将其绑定到一个名称(代码< > TEMP1和<代码> $< /COD>,方便)。 您可能会注意到按钮的数量远小于列表的实际大小,因为当您滚动浏览时,Polymer会动态渲染它们。您可以在单击此按钮时暂停计算以发现底层数据模型,也可以在调试器或源代码中四处查看以发现它在做什么,但我将在此处留下几个表达式供您使用:

> passwordManager = document.querySelector('* /deep/ passwords-section').passwordManager_
PasswordManagerImpl {}
> await new Promise(resolve => passwordManager.getPlaintextPassword(0, resolve))
{index: 0, plaintextPassword: "cisco"}
或者
queryObjects(PasswordManagerImpl)
,再次绕过DOM,更自由地在堆中查找对象


如果
/deep/
没有任何替换,我们可以尝试使用TreeWalker/NodeIterator接口依次递归地打开每个
shadowRoot

您无法选择这些元素,因为它们位于shadow DOM中

您可以尝试阴影穿透子体combinator
/deep/
,尽管它的命运不确定,因为它是V0的一部分,而不是V1阴影DOM的一部分。(例如,您只能从
querySelector
中使用它,而不能从样式表中使用。)不过,Chrome暂时支持它

> document.querySelectorAll('* /deep/ button#showPasswordButton[title="Show password"]')
NodeList(41)
(过滤掉标题为“隐藏密码”的人)

通过devtoolsapi,我们还可以访问Chrome的
queryObjects
函数,该函数将在内存中查找特定类型的所有实例

> queryObjects(HTMLButtonElement)
undefined
Array(122)
<> > <代码> QueObjs<代码>有点奇怪,(中间的<代码>未定义< /代码>是一个线索),所以我们必须右击>存储为全局变量,将其绑定到一个名称(代码< > TEMP1和<代码> $< /COD>,方便)。 您可能会注意到按钮的数量远小于列表的实际大小,因为当您滚动浏览时,Polymer会动态渲染它们。您可以在单击此按钮时暂停计算以发现底层数据模型,也可以在调试器或源代码中四处查看以发现它在做什么,但我将在此处留下几个表达式供您使用:

> passwordManager = document.querySelector('* /deep/ passwords-section').passwordManager_
PasswordManagerImpl {}
> await new Promise(resolve => passwordManager.getPlaintextPassword(0, resolve))
{index: 0, plaintextPassword: "cisco"}
或者
queryObjects(PasswordManagerImpl)
,再次绕过DOM,更自由地在堆中查找对象


如果
/deep/
没有任何替换,我们可以尝试使用TreeWalker/NodeIterator接口依次递归打开每个
shadowRoot

您不能这样选择它们,因为它们位于shadow DOM中。如果您不知道,Chrome在页面上有一个导出密码的按钮:)@JoshLee我其实不知道。谢谢你指出这一点。三个代表菜单的垂直点对我来说并不明显。你不能这样选择它们,因为它们在阴影DOM中。如果你不知道,Chrome在该页面上有一个导出密码按钮:)@JoshLee我其实不知道。谢谢你指出这一点。三个代表菜单的垂直点对我来说并不明显。太酷了!难以置信的学习机会。非常感谢你!太酷了!难以置信的学习机会。非常感谢你!