getComputedStyle 按预期返回,但 getComputedStyle.anyProperty 未返回

getComputedStyle returns as expected, but getComputedStyle.anyProperty does not

提问人:Jeff 提问时间:10/22/2022 最后编辑:Jeff 更新时间:10/23/2022 访问量:47

问:

我正在开发浏览器脚本,只有一个站点不起作用:craigslist.org/anypost。函数 getComputedStyle() 正确地返回具有正确值的元素的对象,但是当我尝试获取属性值时,它返回了一个不正确的值。CSSStyleDeclaration

例如:

var elementBody = document.getElementsByTagName("body");      // object HTMLCollection(1)
var elementBodyAll = document.body.getElementsByTagName("*"); // object HTMLCollection(42)
var elements = []                                             // array(43)
    .concat(Array.from(elementBody))
    .concat(Array.from(elementBodyAll));

for (let i = 0; i < elements.length; i++) {
    var element = elements[i];
    var elementStyle = getComputedStyle(element);

    console.dir(elementStyle);
    // Result: [CSSStyleDeclaration] object
    // Expanding object shows fontFamily: "\"Bitstream Vera Serif\", \"Times New Roman\", serif"

    console.dir(elementStyle.fontFamily);
    // Result: "sans-serif"
    // Expected result: "\"Bitstream Vera Serif\", \"Times New Roman\", serif"
}

有人启发了我。它在所有其他站点上按预期工作。

编辑

为我尝试了一些新的选择器:var elements

var elements = document.getElementsByTagName("span"); // Same result "sans-serif"
var elements = document.getElementById("titletextonly"); // Nonexistant
var elements = document.getElementsByClassName("postingtitletext"); // Same result "sans-serif"

有趣的是不存在的。服务器是否可以在我的浏览器脚本运行后添加元素?

JavaScript GreaseMonkey 用户脚本

评论

0赞 Dai 10/22/2022
您是如何创建/获得该系列的?elements
0赞 Dai 10/22/2022
document.getElementsByTagName("body")[0]顺便说一句,是一回事。document.body
0赞 Jeff 10/22/2022
我想知道该网站是否以某种方式阻止了这种浏览器行为?这是我能想到为什么它只在这个网站上失败的唯一原因。我知道该网站使用了非常强大的反机器人保护。
0赞 Dai 10/22/2022
如果排除并改用每个页面中间的单个已知元素,会发生什么情况?body

答: 暂无答案