2013-10-21 59 views
0

我使用three.js将webgl嵌入到liferay portlet中。我希望在更改影响Portlet大小的页面布局时,让渲染器调整图像大小(画布元素)。所以基本上每当portlet调整大小时,我都希望能够通过three.js调用来调整画布的大小。 Three.js有一个渲染器对象,通过它可以设置尺寸。问题在于获取portlet的宽度。有没有办法捕获重绘事件并获取用于调整canvas元素大小的portlet宽度?liferay portal canvas调整大小

感谢

+0

你尝试使用宽度:自动? –

回答

0

您可以收听到两个,在Liferay的的portletMovedupdatedLayout事件。

Liferay.on('portletMoved', function(event) { 
    var portlet = event.portlet; 

    var newWidth = portlet.width(), 
     newHeight = portlet.height(); 

    [...] 
}); 

Liferay.on('updatedLayout', function(event) { 
    // Assuming you have Alloy on your script, you can use A.one to get the 
    // portlet node. Otherwise, you could use document.getElementById 
    var portlet = A.one('#' + portletId); 

    var newWidth = portlet.width(), 
     newHeight = portlet.height(); 

    [...] 
}); 
+0

我在我的portlet jsp上的javascript中尝试了第一个建议的事件。我将其修改为只在事件发生时发出警报(“portlet已移动”)。这没有奏效。我将该活动的名称更改为“allPortletsReady”,并且事件被捕获并且发布了警报。我在哪里可以找到Liferay使用的有效事件名称列表? – user2744285