Javascript getElementsByClassName()在Firefox 25中找不到元素

Javascript getElementsByClassName()在Firefox 25中找不到元素,javascript,firefox,firefox-addon,onload,firefox-developer-tools,Javascript,Firefox,Firefox Addon,Onload,Firefox Developer Tools,在Firefox 24中,使Firefox inspector中的选定项目以深蓝色勾勒,因此它们更可见。然而,在Firefox25测试版中,当查找带有“iframe ruleview”类(inspector的右列表)的面板时,它说它是未定义的,尽管我可以在DOM inspector中看到这个元素,但它是带有css属性的右面板 content/InspectorWeaks.js中的相关代码: // window.inspector is documented in inspector-panel.

在Firefox 24中,使Firefox inspector中的选定项目以深蓝色勾勒,因此它们更可见。然而,在Firefox25测试版中,当查找带有“iframe ruleview”类(inspector的右列表)的面板时,它说它是未定义的,尽管我可以在DOM inspector中看到这个元素,但它是带有css属性的右面板

content/InspectorWeaks.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未定义错误。

每晚在Firefox中查看此UI时,
位于另一个
内部,该
本身位于选项卡浏览器绑定中的匿名内容内

你应该确保两件事是真实的:

1) 您的代码正在
中运行


2) 如果创建ruleview iframe是异步的,那么在创建ruleview iframe之前,您的代码不会运行。

每晚在Firefox中查看此UI时,
位于另一个
内部,该
本身位于选项卡浏览器绑定中的匿名内容中

你应该确保两件事是真实的:

1) 您的代码正在
中运行


2) 如果创建ruleview iframe是异步的,那么在创建ruleview iframe之前,您的代码不会运行。

每晚在Firefox中查看此UI时,
位于另一个
内部,该
本身位于选项卡浏览器绑定中的匿名内容中

你应该确保两件事是真实的:

1) 您的代码正在
中运行


2) 如果创建ruleview iframe是异步的,那么在创建ruleview iframe之前,您的代码不会运行。

每晚在Firefox中查看此UI时,
位于另一个
内部,该
本身位于选项卡浏览器绑定中的匿名内容中

你应该确保两件事是真实的:

1) 您的代码正在
中运行


2) 在创建ruleview iframe之前,如果创建是异步进行的,则代码不会运行。

在打开工具箱之前,不会创建面板。我们已经创建了在这些面板中获取对象的有用方法。我不确定您希望如何附加代码,但以下是如何打开inspector面板并添加调整的示例:

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主题变得更加容易,这样您就不需要像这样使用hack了。

在打开工具箱之前,不会创建面板。我们已经创建了在这些面板中获取对象的有用方法。我不确定您希望如何附加代码,但以下是如何打开inspector面板并添加调整的示例:

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主题变得更加容易,这样您就不需要像这样使用hack了。

在打开工具箱之前,不会创建面板。我们已经创建了在这些面板中获取对象的有用方法。我不确定您希望如何附加代码,但以下是如何打开inspector面板并添加调整的示例:

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主题变得更加容易,这样您就不需要像这样使用hack了。

在打开工具箱之前,不会创建面板。我们已经创建了在这些面板中获取对象的有用方法。我不确定您希望如何附加代码,但以下是如何打开inspector面板并添加调整的示例:

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主题变得更加容易,这样您就不需要像这样使用hack了。

似乎“加载”不起作用,但它可以在“页面显示”活动中使用。
可能订单/事件绑定已在25年内更改。

似乎“加载”不起作用,但它在“pageshow”事件中可用。
可能订单/事件绑定已在25年内更改。

似乎“加载”不起作用,但它在“pageshow”事件中可用。
可能订单/事件绑定已在25年内更改。

似乎“加载”不起作用,但它在“pageshow”事件中可用。
可能订单/事件绑定在25中更改。

Try
var frame=document.querySelector('.iframe ruleview')向我们显示相关的HTML。如果当前框架中有一个类为
iframe ruleview
的对象,那么它会工作,因此会出现其他问题,我们需要查看HTML以帮助您了解其他问题。请尝试
var frame=document.querySelector('.iframe ruleview')向我们显示相关的HTML。如果当前框架中有一个类为
iframe ruleview
的对象,那么它会工作,因此会出现其他问题,我们需要查看HTML以帮助您了解其他问题。请尝试
var frame=document.querySelector('.iframe ruleview')向我们显示相关的HTML。如果当前框架中有一个对象的类为
iframe ruleview
,那么它将起作用,因此还存在其他问题,我们需要查看要提供的HTML