Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firefox addon XUL浏览器内容中的工具提示(标题)不起作用?_Firefox Addon_Tooltip_Xul - Fatal编程技术网

Firefox addon XUL浏览器内容中的工具提示(标题)不起作用?

Firefox addon XUL浏览器内容中的工具提示(标题)不起作用?,firefox-addon,tooltip,xul,Firefox Addon,Tooltip,Xul,我正在为FireFox开发一个扩展。我使用包含的。不幸的是,只要浏览器中显示的页面具有HTML属性,该属性的值就不会显示为工具提示 如何才能使工具提示正确显示?没有在工具提示中自动显示标题属性的机制-浏览器窗口有专门的代码,您需要在扩展中复制此代码。这意味着您需要定义一个,例如: 您应该在元素中使用此工具提示,如下所示: 您应该创建一个fillTooltip()函数,每当工具提示出现时都会调用该函数。它需要查看鼠标指针悬停在上面的HTML元素,检查其title属性,并将该属性的值放入工具

我正在为FireFox开发一个扩展。我使用包含的。不幸的是,只要浏览器中显示的页面具有HTML属性,该属性的值就不会显示为工具提示


如何才能使工具提示正确显示?

没有在工具提示中自动显示
标题
属性的机制-浏览器窗口有专门的代码,您需要在扩展中复制此代码。这意味着您需要定义一个,例如:


您应该在
元素中使用此工具提示,如下所示:


您应该创建一个
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');