Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.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 内容脚本:页面工作程序-<;车身>;宽度为0的元素_Javascript_Css_Dom_Firefox Addon_Firefox Addon Sdk - Fatal编程技术网

Javascript 内容脚本:页面工作程序-<;车身>;宽度为0的元素

Javascript 内容脚本:页面工作程序-<;车身>;宽度为0的元素,javascript,css,dom,firefox-addon,firefox-addon-sdk,Javascript,Css,Dom,Firefox Addon,Firefox Addon Sdk,我想自动打开一个网站,并透露有关渲染DOM的详细信息。为此,我使用了页面工作者()。在内容脚本中,我执行如下操作: var body = document.getElementsByTagName("body")[0]; console.log(getComputedStyle(body).width); console.log(body.getBoundingClientRect().width); 两个宽度值的输出均为“0”。这同样适用于其他元素。我是否应该得出这样的结论:在使用页面工作程

我想自动打开一个网站,并透露有关渲染DOM的详细信息。为此,我使用了页面工作者()。在内容脚本中,我执行如下操作:

var body = document.getElementsByTagName("body")[0];
console.log(getComputedStyle(body).width);
console.log(body.getBoundingClientRect().width);
两个宽度值的输出均为“0”。这同样适用于其他元素。我是否应该得出这样的结论:在使用页面工作程序时,DOM元素没有正确呈现?有没有办法从中获得真实的数据?或者,有没有其他合适的方法来获取呈现的DOM的详细信息,这些DOM的行为与web浏览器中手动打开网站的行为完全相同?因为如果我手动打开同一个网站并执行相同的命令,它(正确地)显示窗口的宽度(1440),当然

编辑 我以前可能应该这么说,但是:
并不是说获取价值根本不起作用。如果深入研究DOM结构,就会得到正确的值。我想,我只对根体元素有问题。奇怪的是,如果我在firefox控制台上执行完全相同的命令,返回值是完全正确的。

你这样做非常有趣

  • 您不必执行
    getElementsByTagName
    来获取body元素,它是
    document
    object
    var body=document.body的一个属性
  • getComputedStyle
    窗口
    对象的一个函数,因此它可以在不将
    窗口放在它前面的情况下工作。
    但仍然想让您知道
  • 您不需要执行
    getComputedStyle
    所需的
    getPropertyValue
    ,我只是在没有它的情况下尝试了它,它工作了,但我以前从未见过它像这样使用,因此可能与此有关:
  • 因此,从引导或草稿行窗口执行此操作:
    gBrowser.contentWindow.getComputedStyle(gBrowser.contentDocument.body).getPropertyValue('width')

    对我有用

    在内容脚本范围中,执行以下操作:

    window.getComputedStyle(document.body).getPropertyValue('width')
    
    如果它仍然不起作用,我想可能是myabe,也可能是myabe,这可能是您提前执行代码的一个机会。
    让我知道它是如何工作的。

    您是否确保您试图与页面工作人员一起打开的网站没有内容安全策略?我遇到了这个,没有明显的出路。。。是的,因为这些值对于dom树中更深层的某些元素是合法的。对不起,我应该写的。谢谢你的回答。事实上,对于某些元素,宽度、高度等都有合法的值,所以我不认为它根本不起作用。它只是对主体的根元素失败。它也不会执行得太晚,因为如果没有指定,则在加载dom和外部资源时会执行内容scritps。