Javascript getElementById和querySelectorAll don';我不工作chrome://history
我试图简化我的生活,通过查询删除chrome历史记录。我有几百个复选框要删除,手动删除真的很痛苦 所以我打开Javascript getElementById和querySelectorAll don';我不工作chrome://history,javascript,html,google-chrome,Javascript,Html,Google Chrome,我试图简化我的生活,通过查询删除chrome历史记录。我有几百个复选框要删除,手动删除真的很痛苦 所以我打开chrome://history/?q=somequery,并看到许多复选框。我写道: document.querySelectorAll('[aria-checked]') 它什么也不返回。好的,我写: document.querySelectorAll('button') 它什么也不回!好的,然后我只需点击编辑HTML按钮,手动添加一些元素,然后尝试按id获取它: 你知道吗?没什
chrome://history/?q=somequery
,并看到许多复选框。我写道:
document.querySelectorAll('[aria-checked]')
它什么也不返回。好的,我写:
document.querySelectorAll('button')
它什么也不回!好的,然后我只需点击编辑HTML
按钮,手动添加一些元素,然后尝试按id获取它:
你知道吗?没什么
我不知道它是否使用了某种框架或阻止我访问这些元素的东西,但我检查了没有I-/frame,所以我只是不明白为什么它不能按预期工作
我在询问之前搜索了一下,找到了几个答案,人们只想在创建元素之前获取元素,但现在页面已完全加载,元素仍然不可用……您需要使用::shadow伪选择器进入shadow dom。请尝试使用此代码段选择所有按钮
[].slice.call(document
.querySelector('history-app::shadow iron-pages history-list')
.querySelector('history-list::shadow iron-list')
.querySelectorAll('iron-list history-item'))
.forEach(function(el) {
console.log(el.querySelector('history-item::shadow button'))
});
这是一个聚合物应用程序。Polymer使用web组件来创建阴影dom。比基本domI更复杂,听说shadowdom仍然是一种实验技术。我没想到他们已经使用了它。一两年前,它更具实验性,现在它有很多用途,浏览器甚至在内部将其用于元素。如果您在各自的检查器中启用它,您可以看到它。IIUC::shadow(和/deep/)选择器从Chrome 45开始就被弃用,并且似乎在今天(Chrome 84)不起作用
[].slice.call(document
.querySelector('history-app::shadow iron-pages history-list')
.querySelector('history-list::shadow iron-list')
.querySelectorAll('iron-list history-item'))
.forEach(function(el) {
console.log(el.querySelector('history-item::shadow button'))
});