- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
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
调用 getStyle
。 findOpacity
的代码是这样的:
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/
function getStyle(el, cssprop) { if (el.currentStyle) { // IE return el.currentStyle[cssprop];
我是一名优秀的程序员,十分优秀!