Я нашел этот файл в коде Google с функцией:
function SetAlwaysOnTop() {
var chkTop = document.getElementById("itmAlwaysOnTop");
var xulWin = window.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebNavigation).QueryInterface(Ci.nsIDocShellTreeItem)
.treeOwner.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIXULWindow);
if(chkTop.getAttribute("checked") == "true") {
xulWin.zLevel = xulWin.raisedZ;
} else {
xulWin.zLevel = xulWin.normalZ;
}
}
Части, которые мне нужны, просто:
var xulWin = window.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebNavigation).QueryInterface(Ci.nsIDocShellTreeItem)
.treeOwner.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIXULWindow);
xulWin.zLevel = xulWin.raisedZ;
Но я не нахожу, что, где определен Си. Есть идеи, что это может быть? Или любая другая идея о том, как установить окно всегда сверху? (это решение "только для окон" мне не подходит).
- обновление
Я читаю о nsIWindowMediator , в котором есть несколько методов для обработки Z-порядка окна. Но это говорит о том, что методы должны использоваться из c ++, а не из JavaScript. Это означает, что код должен использоваться из компонентов XPCOM (я должен как компонент XPCOM, чтобы открыть окно)? Кто-нибудь, кто уже использовал это, мог подтвердить?
Я все еще читаю.
- обновление
Я пробовал nsIWindowMediator (с компонентом XPCOM), но он просто ничего не делает, когда я устанавливаю уровень Z.
Все еще ищите способ поставить окно сверху ...
- попытка «всегда поднят»:
test.xul:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window width="400" height="300"
onload="open('top.xul','GreenfoxChannelWindow','chrome, alwaysraised');"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<label value="MAIN WINDOW"/>
</window>
top.xul:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window width="400" height="300"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<label value="ON TOP"/>
</window>
не сработало.
- попытка с использованием 'zlevel':
test.xul:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window width="400" height="300"
onload="open('top.xul','GreenfoxChannelWindow','chrome');"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<label value="MAIN WINDOW"/>
</window>
top.xul:
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window width="400" height="300" zlevel="6"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<label value="ON TOP"/>
</window>
не сработало. Ни с установленным всегда повышенным, либо с добавлением более высокого или более низкого уровня zlevel к test.xul (с top.xul zlevel = "6")