gpt4 book ai didi

javascript - getCSSProperties 给出了一个 Javascript 错误

转载 作者:太空宇宙 更新时间:2023-11-04 14:27:48 26 4
gpt4 key购买 nike

function getStyle(el, cssprop) {
if (el.currentStyle) { // IE
return el.currentStyle[cssprop];
} else if (document.defaultView && document.defaultView.getComputedStyle) { // Firefox
return document.defaultView.getComputedStyle(el, "")[cssprop];
} else { // try and get inline style
return el.style[cssprop];
}
}

调用时会报错它给出了这个错误

NS_ERROR_XPC_BAD_CONVERT_JS: Could not convert JavaScript argument arg 0 [nsIDOMWindow.getComputedStyle]
return document.defaultView.getComputedStyle(el, "")[cssprop];

所以函数调用是findOpacity(window.thirddiv,1)findOpacity 调用 getStylefindOpacity 的代码是这样的:

function findOpacity(node, minValue) {
if(node==document.body) {
return getStyle(document.body, 'opacity') < minValue
? getStyle(document.body, 'opacity')
: minValue;
} else {
return findOpacity(node.parentNode, getStyle(node.parentNode, 'opacity'))
< minValue
? findOpacity(node.parentNode, getStyle(node.parentNode, 'opacity'))
: minValue;
}
}

最佳答案

我不知道到底是什么导致了你的问题,但是试试

function findOpacity(node, maxValue) {
var val = node===document.body
? getStyle(document.body, 'opacity')
: findOpacity(node.parentNode);
if(maxValue !== void(0)) val = Math.min(val, maxValue);
return +val;
}

注意你应该避免像

这样的事情
getStyle(document.body, 'opacity') < minValue
? getStyle(document.body, 'opacity')
: minValue;

因为您可以计算 getStyle(document.body, 'opacity') 两次。此外,minValue 是最大值而不是最小值。

你的问题

问题是 window.thirddiv 不是 html 元素,而是 XPC wrapper .并且您不能将 document.defaultView.getComputedStyle 与 XPC 包装器一起使用。

我的猜测是您正在编写具有权限的 GreaseMonkey 脚本。然后,你应该阅读 http://wiki.greasespot.net/XPCNativeWrappers , 要获取真正的 html 元素,请使用 window.thirddiv.wrappedJSObject。问题是您的代码容易受到攻击,恶意脚本可能会访问特权方法,例如 GM_xmlhttpRequest

如果您不创建 GM 脚本,您可以使用 XPCNativeWrapper.unwrap(obj) 解包 XPC 包装器。同样,这是一种不安全的做法。

关于javascript - getCSSProperties 给出了一个 Javascript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19413208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com