使用javascript getElementById的Firefox XUL工具栏问题
我正在编写我的第一个Firefox XUL工具栏,并且出现了一个奇怪的行为 - 为了调试我的代码,我从firefox工具栏和我创建的非常简单的HTML文件上的按钮调用了相同的js函数。
javascript函数显示警告窗口,使用'document.getElementById'获取元素,更改其颜色,并显示另一个警报窗口。
当使用HTML按钮进行调用时,javascript函数运行良好,但使用工具栏按钮时,'document.getElementById'返回null并且函数终止(仅显示第一个警报窗口)。
任何猜测什么可能是错的? 我提供了下面的(非常简单的)代码用于refenrece。
提前谢谢了!
JavaScript文件 - facebrew.js
函数FaceBrew_rtlSelection(){alert('Before!'); sel_node = document.getElementById(“header”); sel_node.style.color ='blue'; 警报( '了!'); }
HTML文件(没有前导空格)
<!DOCTYPE HTML PUBLIC“ - // W3C // DTD XHTML 1.0 Transitional // EN”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html xmlns =“http ://www.w3.org/1999/xhtml“>
<head> <title>测试</ title> <script type =“text / javascript”src =“http://localhost/Sandbox/FaceBrew/chrome/content/facebrew.js”> </ script> </ head>
<body> <input type =“button”value =“Click me”id =“select”onclick =“FaceBrew_rtlSelection()”/> <div id =“header”> <h1> Hello world!</ h1> </ div> </ body> </ html>
XUL文件 - facebrew.xul
<script type="application/x-javascript"
src="chrome://facebrew/content/facebrew.js" />
<toolbox id="navigator-toolbox">
<toolbar id="FaceBrew-Toolbar" toolbarname="FaceBrew Toolbar" accesskey="F"
class="chromeclass-toolbar" context="toolbar-context-menu"
hidden="false" persist="hidden">
<toolbaritem flex="0">
<toolbarbutton id="FaceBrew-Web-Button" tooltiptext=""
label="Run" oncommand="FaceBrew_rtlSelection()" />
</toolbaritem>
</toolbar>
</toolbox>
CSS文件 - facbrew.css
FaceBrew-Web-Button {
list-style-image: url("chrome://facebrew/skin/web.png");
}
正如保罗所说,当从工具栏调用函数时,文档上下文是不同的。 获取当前选定的HTML文档对象:
var doc = gBrowser.selectedBrowser.contentDocument;
doc.getElementById(...);
另外,您可以随时查看错误控制台,查看代码失败的原因(工具 - >错误控制台)。
您的工具栏是覆盖层,所以上下文(文档和窗口)是browser.xul,不包含您的html文件。
链接地址: http://www.djcxy.com/p/88015.html上一篇: Firefox XUL toolbar problem with javascript getElementById