Firefox 4.0b1 中 jssh 中的 Javascript 错误

Posted

技术标签:

【中文标题】Firefox 4.0b1 中 jssh 中的 Javascript 错误【英文标题】:Javascript error in jssh in Firefox 4.0b1 【发布时间】:2010-07-27 18:10:20 【问题描述】:

通过为新的 Firefox 4.0 beta 1 编译和构建的 jssh 使用此 javascript 返回一条奇怪的消息。这是代码(如果有点乱,请见谅)。

总之,代码检查 Firefox 窗口的所有帧,这是我们单元测试的一个测试页面 <td> 元素,该元素有一个 onclick 包含短语 Goodbye Wonderful,而不是得到一个失败的响应,我们最后收到这个奇怪的 nserror,我们无法解释。

var firefoxWindow = getWindows()[0];
var browser = firefoxWindow.getBrowser();
var doc = browser.contentDocument;


var elem = null;
var elems = doc.getElementsByTagName('td');

for(a=0;a < elems.length;a++) if( ((elems[a] !== null && elems[a].hasAttributes() === true && elems[a].getAttribute('onclick') !== null && elems[a].getAttribute('onclick').toString().match(/doNothing/gim) !== null && elems[a].getAttribute('onclick').toString().match(/Goodbye Wonderful/gim).length >= 0) || (elems[a] !== null && elems[a].onclick !== null && elems[a].onclick.toString().match(/Goodbye Wonderful/gim) !== null && elems[a].onclick.toString().match(/Goodbye Wonderful/gim).length >= 0)))  elem = elems[a];  

var found = false;
var window = null; 

for(var i=0; i < firefoxWindow.frames.length; i++)if(firefoxWindow.frames[i].toString().toLowerCase().indexOf('object window') > -1)window = firefoxWindow.frames[i]; break;


function recursiveSearch(frames) for(var i=0; i<frames.length; i++)var elems = frames[i].document.getElementsByTagName('td'); for(a=0;a < elems.length;a++) if( ((elems[a] !== null && elems[a].hasAttributes() === true && elems[a].getAttribute('onclick') !== null && elems[a].getAttribute('onclick').toString().match(/Goodbye Wonderful/gim) !== null && elems[a].getAttribute('onclick').toString().match(/Goodbye Wonderful/gim).length >= 0) || (elems[a] !== null && elems[a].onclick !== null && elems[a].onclick.toString().match(/Goodbye Wonderful/gim) !== null && elems[a].onclick.toString().match(/Goodbye Wonderful/gim).length >= 0)))  elem = elems[a];   if(elem)found = true; return; else if(frames[i].frames.length>0)recursiveSearch(frames[i].frames);if(!elem && window.frames.length > 0) recursiveSearch(window.frames); var origColor = '';if(elem !== null)origColor = elem.style.backgroundColor;if(origColor === null)origColor = ''; elem.style.backgroundColor = 'yellow';

这是来自 jssh 的返回消息:

收到:未捕获的异常:[异常...“组件不可用”nsresult:“0x80040111(NS_ERROR_NOT_AVAILABLE)”位置:“JS 框架 :: 交互式 :: :: 第 1 行”数据:否]

【问题讨论】:

【参考方案1】:

JSSh 在 Firefox 4 中不再受支持并且处理起来很麻烦,切换到 mozrepl 因为它主要是用 javascript 编写的,并且将我自己的 javascript 命令直接添加到扩展似乎是完成某些事情的更好方法。

【讨论】:

以上是关于Firefox 4.0b1 中 jssh 中的 Javascript 错误的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 4.0 CSS 变化?浮动问题?

WorldCreator2.4.0b1地形编辑工具实践总结

matlab中if、else语句运算结果为啥只显示最后一个if的值?

迁移到 Jboss 7.0 AS 后 Firefox 和 IE 中的 ViewExpiredException

J_security_check 在 Firefox 4 中失败

火狐浏览器useragent属性值