2011-07-29 90 views
0

我想用Icefaces JSF庫創建一個panelPopup。Icefaces和ActiveXObject

我使用Netbeans和Glassfish。我正確安裝了Icefaces Netbeans集成插件,並在Netbeans上創建了一個小型測試項目作爲Icefaces項目。

測試時,彈出的對話框是不是真的跳出頁面(這是內嵌在網頁上)

的Firebug的報告爲「不的ActiveXObject定義」(當FF測試)。

但整個FF,IE,Chrome和Opera(所有最新版本)

輸出恆定的頁面代碼如下:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:icecore="http://www.icefaces.org/icefaces/core" 
     xmlns:ace="http://www.icefaces.org/icefaces/components" 
     xmlns:ice="http://www.icesoft.com/icefaces/component"> 
    <h:head> 
     <title>ICEfaces 2</title> 
     <link rel="stylesheet" type="text/css" href="./xmlhttp/css/rime/rime.css"/> 
    </h:head> 
    <h:body styleClass="ice-skin-rime"> 
     <h:form id="form">   

      <ice:panelPopup rendered="true" visible="true"> 
       <f:facet name="header"> 
        popup header contents 
       </f:facet> 
       <f:facet name="body"> 
        popup body contents 
       </f:facet> 
      </ice:panelPopup>   

     </h:form> 
    </h:body> 
    <h:outputStylesheet library="org.icefaces.component.skins" name="rime.css" /> 
</html> 

請人指點我這是什麼。

回答

0

ActiveXObject是MSIE專有的JavaScript對象。該錯誤似乎出現在Firefox中,我敢打賭,涉及的JavaScript代碼錯誤地使用瀏覽器檢測代替功能檢測,並以某種方式檢測到您的Firefox瀏覽器是MSIE瀏覽器,並且不小心嘗試分配ActiveXObject實例。

或者更糟糕的是,JavaScript代碼依賴於所有目標網頁瀏覽器都支持ActiveXObject,並且在不做任何瀏覽器或功能檢測的情況下不小心使用它。這種瀏覽器範圍內的支持實際上是不真實的,只有Microsoft的創建才支持。

這就是所有可以說的信息。你必須運行一個JavaScript調試器(FirebugVenkman?等),並確定JavaScript代碼中的罪魁禍首,最終將其返回到服務器端代碼,然後相應地修復它或將其報告給負責任的維護者。

+0

但是,包括IE在內的所有主流瀏覽器的輸出都是不變的。 (我已經更新了我的帖子以及頁面標記) – siva636

+0

問題出在生成的JavaScript代碼中。鑑於你的視圖標記,那隻能是IceFaces-proprietaty JS代碼。 – BalusC

+0

我沒有理由拒絕BalusC所說的:Icefaces panelPopup組件有一個嚴重的錯誤(一個阻止我們使用它並且很難找到解決方法的錯誤)。但Icefaces是流行的JSF框架,panelPopup是Icefaces中最常用的組件之一。如果在產品發佈中存在嚴重的錯誤,它應該已經被發現。但爲什麼它還沒有出現? – siva636