getElementsByClassName() 在 Firefox 25 中找不到元素
getElementsByClassName() not finding element in Firefox 25
在 Firefox 24 中,Devtools-tweaks 使 Firefox 检查器中的选定项目以深蓝色勾勒出来,因此它们更明显。然而,在 Firefox 25 beta 中,它说在查找带有"iframe-ruleview"类(检查器的正确列表)的面板时它是未定义的,尽管我可以在 DOM 检查器中看到这个元素,但它是具有 css 属性的正确面板。
内容/检查器中的相关代码调整.js:
// window.inspector is documented in inspector-panel.js
// .doc and window is inspector.xul window.
window.addEventListener('load',function() {
var frame = document.getElementsByClassName('iframe-ruleview')[0];
if (!frame.contentWindow.location.href.contains('cssruleview.xul')) {
//Not the xul, it's a html we have to extend from here (Firefox 22+)
frame.setAttribute('context',"dtCSSContext");
}
function styleit() {
var frame = document.getElementById('markup-box').children[0];
var doc = frame.contentDocument;
var style= doc.createElement('style');
style.appendChild(doc.createTextNode(
'.theme-selected { border:1px solid blue; padding:1px; margin-left:-2px; border-radius:3px;}'+
'.theme-twisty:not([open]) {top:5px; left:5px;}'
));
doc.body.appendChild(style);//what's the equivalent for old xul file?
}
styleit();
window.inspector.on("markuploaded", styleit);
frame.addEventListener('load',styleit);
//frame.contentWindow.addEventListener('load',styleit);
});
它说frame
是未定义的,这是一个使此代码的其余部分无法工作的异常。
我尝试使用下面的示例更改它,但我认为它意味着从主框架打开 devtools?
window.addEventListener('load',function() {
let {ConsoleUtils, gDevTools} = Components.utils.import("resource:///modules/devtools/gDevTools.jsm", {});
let {devtools} = Components.utils.import("resource://gre/modules/devtools/Loader.jsm", {});
let TargetFactory = devtools.TargetFactory;
console.log('tf:')
console.log(TargetFactory)
console.log(devtools)
let target = TargetFactory.forTab(gBrowser.selectedTab);
^ 此代码给出 gBrowser 未定义错误。
打开工具箱之前不会创建面板。我们创建了用于获取这些面板中对象的有用方法。我不确定您要如何附加代码,但这里有一个如何打开检查器面板并添加调整的示例:
let {ConsoleUtils, gDevTools} = Cu.import("resource:///modules/devtools/gDevTools.jsm", {});
let {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
let TargetFactory = devtools.TargetFactory;
let target = TargetFactory.forTab(gBrowser.selectedTab);
gDevTools.showToolbox(target, "inspector").then(function(toolbox) {
inspector = toolbox.getCurrentPanel();
let doc = inspector._markupFrame.contentDocument;
let style = doc.createElement('style');
style.appendChild(doc.createTextNode(
'.theme-selected { border:1px solid blue; padding:1px; margin-left:-2px; border-radius:3px;}'+
'.theme-twisty:not([open]) {top:5px; left:5px;}'
));
doc.body.appendChild(style);
});
我怀疑与其打开面板,您可能更喜欢听工具箱的打开,但我认为您手头有它。
另一方面,我们很快就会使创建 DevTools 主题变得更加容易,这样你就不需要使用这样的黑客了。
Firefox 中查看此 UI,<iframe class='iframe-ruleview'>
位于另一个 <iframe id="toolbox-panel-iframe-inspector" class="toolbox-panel-iframe">
中,该 本身位于一个<iframe class="devtools-toolbox-bottom-iframe">
内,该本身是选项卡浏览器绑定内的匿名内容。
您应该确保两件事是正确的:
1)您的代码在<iframe id="toolbox-panel-iframe-inspector" class="toolbox-panel-iframe">
内运行。
2) 在创建规则视图 iframe 之前,您的代码未运行(如果该创建是异步发生的)。
似乎"加载"不起作用,但它在"pageshow"事件中可用。也许顺序/事件绑定在 25 年发生了变化。
- [Vue warn]:找不到元素
- 在页面中找不到元素的正确位置.函数未考虑填充
- JQuery找不到元素
- 在Selenium Web驱动程序2.0中找不到元素
- 没有这样的元素:找不到元素:正在验证web元素是否丢失
- jQuery没有'找不到元素或其属性
- 量角器 3.1.1 + 角度 2:找不到元素的可测试性
- jQuery .each() 在 wooCommerce header cart list 中找不到元素
- jQuery 找不到元素
- getElementsByClassName() 在 Firefox 25 中找不到元素
- 在网页上找不到元素,因为它加载了基于javascript的错误并在几秒钟后隐藏(注册表单)
- 如果jQuery不抱怨/抛出错误'在选择器中找不到元素
- jQuery在ngView加载的元素[AngularJS]上找不到元素
- Rails/Javascript选择器赢得'找不到元素
- 可以'在window.deocument.forms[0]中找不到元素
- CasperJS找不到元素,即使我可以在开发人员工具中按CTRL-F它
- PHP或Javascript:找不到元素错误
- onRenderd在Meteor中找不到元素
- 为什么它找不到元素的内部 HTML
- ' getElementById '在' '标签中找不到元素