getCSSProperties给出了一个Javascript错误
getCSSProperties gives out a Javascript bug
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包装器。而且您不能将document.defaultView.getComputedStyle
与 XPC 包装器一起使用。
我的猜测是你正在用特权编写一个GreaseMonkey脚本。然后,您应该阅读 http://wiki.greasespot.net/XPCNativeWrappers,并获取真正的 html 元素,请使用 window.thirddiv.wrappedJSObject
.问题是您的代码将容易受到攻击,恶意脚本可能会访问特权方法,例如 GM_xmlhttpRequest
.
如果您没有创建 GM 脚本,则可以使用 XPCNativeWrapper.unwrap(obj)
解开 XPC 包装器。同样,这是一种不安全的做法。
相关文章:
- 我应该如何从xml文件构建一个javascript页面
- 有没有一个javascript图形绘制库可以进行气球树布局
- 如何将一个JavaScript函数回调为多个函数
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 多次调用另一个javascript函数中的javascript函数
- HTML外部javascript加载另一个javascript
- 在一个javascript文件中为整个网站创建标签
- 在任何AJAX调用之前触发一个javascript函数
- 如何用另一个Javascript更改Javascript函数值
- 动态创建一个javascript/jquery多级数组
- 将变量值从一个javascript传递到另一个javascript
- 获取一个javascript对象attr's
- 是一个javascript bookmarklet,可以设置破坏跨域安全的域cookie
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- 添加一个javascript函数来下载elfinder上的事件
- 有没有一个Javascript代码可以看到你的缓存有多满
- 使用jenkins从不同文件夹中的文件构建一个javascript文件
- 是否有一个javascript库来解析简单的查询
- 一个javascript实现base64图像编码并将结果写入文本文件
- 使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器