gpt4 book ai didi

java - 以编程方式调整 zk 模态大小

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:39 32 4
gpt4 key购买 nike

我有一个名为 loginModal 的模式的应用程序,其中包含一个 iframe

<window id="loginModal" title="Login" border="normal" position="center,top" closable="true" width="500px" height="350px" >
<iframe src="/usermenu.zul" id="iframeLogin" scrolling="false" width="100%" height="100%"/>
</window>

iframe 调用页面用户菜单。在某些情况下,用户菜单可能会重定向到内容大于模式的验证页面。我想找到一种方法,在进行重定向时我可以调整模式的大小以使其自动变大。

请注意,getParent 返回 null 并且不会将模态对象返回给我。

到达验证页面时,我尝试向登录模式发送消息。消息已收到,但我无法通过 JavaScript 调整模式大小。

在验证页面

<script type="text/javascript">
window.parent.postMessage('verification','*');
</script>

在登录模式中

<script type="text/javascript">
window.addEventListener('message', receiveMessage, false);

function receiveMessage(evt) {

if (evt.data == 'verification') {
loginModal.height = 500;
}
}
</script>

我尝试了几种设置高度的方法,但没有一个有效。我知道消息已到达登录模式,因为我可以发送警报。任何帮助,将不胜感激。谢谢

最佳答案

正如您在 Sari awnser 的评论中提到的那样,您不需要 iframe 。只需将 Composer 添加到您的模态窗口

<window id="loginModal" ...  apply="mypkg.MyComposer">

并在此处“伪造”重定向逻辑。

class MyComposer extends SelectorComposer {

@Wire
Window loginModal;

public void doAfterCompose(Component comp){
super.doAfterCompose(comp);
if(checkConditionForVerificationPage){
Executions.createComponents("/verification.zul", loginModal, null);
} else {
Executions.createComponents("/usermenu.zul", loginModal, null);
}
}
}

我的经验告诉我,最好避免在 zk 中进行真正的重定向。
这并不奇怪,因为 zk 是 ajax :)
如果你想删除验证页面并在验证调用后添加用户菜单

Events.sendEvent("onVerify", loginModal, mydata);

成功后在验证页面的Composer中添加到composer上面

@Listen("onVerify = #loginModal")
public void handelVerification(Event e) {
loginModal.removeChild(loginModal.query("#idOfTopComponentFromVerificationPage"));
Executions.createComponents("/usermenu.zul", loginModal, null);
}

当然你可以设置loginModal的高度和宽度

loginModal.setWidth("100px");

关于java - 以编程方式调整 zk 模态大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21731152/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com