Firefox addon XUL浏览器内容中的工具提示(标题)不起作用?
我正在为FireFox开发一个扩展。我使用包含的。不幸的是,只要浏览器中显示的页面具有HTML属性,该属性的值就不会显示为工具提示Firefox addon XUL浏览器内容中的工具提示(标题)不起作用?,firefox-addon,tooltip,xul,Firefox Addon,Tooltip,Xul,我正在为FireFox开发一个扩展。我使用包含的。不幸的是,只要浏览器中显示的页面具有HTML属性,该属性的值就不会显示为工具提示 如何才能使工具提示正确显示?没有在工具提示中自动显示标题属性的机制-浏览器窗口有专门的代码,您需要在扩展中复制此代码。这意味着您需要定义一个,例如: 您应该在元素中使用此工具提示,如下所示: 您应该创建一个fillTooltip()函数,每当工具提示出现时都会调用该函数。它需要查看鼠标指针悬停在上面的HTML元素,检查其title属性,并将该属性的值放入工具
如何才能使工具提示正确显示?没有在工具提示中自动显示
标题
属性的机制-浏览器窗口有专门的代码,您需要在扩展中复制此代码。这意味着您需要定义一个,例如:
您应该在
元素中使用此工具提示,如下所示:
您应该创建一个fillTooltip()
函数,每当工具提示出现时都会调用该函数。它需要查看鼠标指针悬停在上面的HTML元素,检查其title
属性,并将该属性的值放入工具提示中。在Firefox中执行此任务的功能是,您可能希望使用以下更简单的变体(未经测试的代码):
函数填充工具提示(工具提示)
{
//沿着DOM层次结构走,直到找到具有title属性的内容
var节点=document.tooltipNode;
while(node&!node.hasAttribute(“title”))
node=node.parentNode;
//如果我们没有找到任何东西,请不要显示工具提示
如果(!节点)
返回false;
//填写工具提示文本并显示它
tooltip.setAttribute(“标签”,node.getAttribute(“标题”);
返回true;
}
我为感兴趣的人找到了解决方案,它是通过向XUL browser元素添加具有以下值的tooltip属性:tooltip=“AHTMLTOLTIP”
或者像这样使用javascript以编程方式添加它:
browser.setAttribute('tooltip','ahtmltoltip')代码>
有关更多详细信息,请查看:工作示例:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<window id="mainWindow" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" title="NanoFL" width="800" height="600" persist="screenX screenY width height sizemode">
<script>
<![CDATA[
function fillTooltip(tooltip)
{
var nodes = document.getElementById("browser").contentWindow.document.querySelectorAll(":hover");
for (var i=nodes.length-1; i>=0; i--)
{
if (nodes[i].hasAttribute("title"))
{
tooltip.setAttribute("label", nodes[i].getAttribute("title"));
return true;
}
}
return false;
}
]]>
</script>
<browser id="browser" src="chrome://nanofl/content/index.html" flex="1" disablehistory="true" tooltip="browserTooltip" />
<tooltip id="browserTooltip" onpopupshowing="return fillTooltip(this)"/>
</window>
=0; 我——)
{
if(节点[i].hasAttribute(“标题”))
{
setAttribute(“标签”,节点[i].getAttribute(“标题”);
返回true;
}
}
返回false;
}
]]>
这适用于panelview元素和主浏览器。在为FF29/Australis构建小部件等时,这似乎是一种更简洁的解决问题的方法。document.getElementById('my-panelview-element').setAttribute('tooltip','ahtmltoltip');