2014-12-01 45 views
0

我已經整合了一個由JSF/primefaces提供的AngularJS應用程序。如果使用Chrome或IE瀏覽器,該頁面可以正常工作,但如果在Firefox中顯示,則不會執行AngularJS擴展。所以,當我看着JS控制檯,我得到我的JS腳本的第一行下面的錯誤(reservation_list.js):帶有JSF/Primefaces的AngularJS在Firefox中失敗

ReferenceError: angular is not defined

所有這些行包含的是:

var disJockeySpyModule = angular.module('ReservationList', []); 

我覺得這是Firefox特有的元素排序或位置問題。我嘗試重新排列元素的順序和位置無濟於事。有沒有人有任何想法如何解決這個問題?

我的XHTML文件如下(修改,以保護實際的內容的專有性):

<!DOCTYPE html> 


<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 

<h:head /> 

<h:body> 
    <ui:composition template="template.xhtml"> 
    <ui:define name="content"> 
     <h:form id="myForm"> 
     <div ng-app="ReservationList"> 
      <h:outputScript library="primefaces" name="jquery/jquery.js" /> 
      <script 
      src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.2/angular.min.js"></script> 
      <h:outputScript library="js" name="reservation_list.js" /> 
      <div ng-controller="myController"> 
      <table> 
       <tbody> 
       <tr> 
        <td> 
        <div 
         class="ui-panel ui-widget ui-widget-content ui-corner-all"> 
         <div 
         class="ui-panel-titlebar ui-widget-header ui-helper-clearfix ui-corner-all"> 
         <span class="ui-panel-title">#{messages._reservation_list}</span> 
         </div> 
         <ul class="reservation-list"> 
         <li class="reservation" 
          ng-repeat="(key, reservation) in reservations" 
          ng-click="setCurrentReservation(reservation)" 
          title="#{messages.reservation_id} {{reservation.id}}"> 
          <table> 
          <tbody> 
           <tr> 
           <td><label class="ui-outputlabel ui-widget">{{reservation.reservationId}}</label></td> 
           </tr> 
          </tbody> 
          </table> 
         </li> 
         </ul> 
        </div> 
        </td> 
       </tr> 
       </tbody> 
      </table> 
      </div> 
     </div> 
     </h:form> 
    </ui:define> 
    </ui:composition> 
</h:body> 
</html> 

謝謝

+0

將angualr.js下載到您的資源文件夾中,並通過帶有'target =「header」的outputScript包含它。 – 2014-12-02 08:02:56

+0

謝謝 - 解決了它!不幸的是,在我已經想出來之前,我沒有看到你的迴應。我在下面進行了更全面的描述。 – Yoshiya 2014-12-02 16:10:35

回答

0

我已經找到了解決這個問題 - 和解釋可能是特別我的網絡環境(通過代理訪問互聯網)。

在我們的環境中,當我們訪問HTTPS站點的第一次,火狐給我們提出了以下對話框警告我們不受信任的連接 - 也許證書無法通過我們的代理訪問(也不知道是什麼):

此連接不受信任

你問的Firefox安全地連接到 ajax.googleapis.com

通常,當你嘗試連接 安全,網站將預發送信任的身份證明,以證明你 是去正確的地方。但是,本網站的身份不能被 驗證。

我該怎麼辦?

如果您通常連接到這個網站沒有問題,這個錯誤可能是 意味着有人試圖模仿該網站,並且您不應該 繼續。

顯然火狐在https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.2/angular.min.js

阻止從網上下載AngularJS的頁面我得到了相同的Firefox的對話框,當我在地址欄直接輸入URL AngularJS。一旦我添加例外,我的網頁在Firefox中正常工作。對於具有相同網絡配置的其他用戶而言,這當然不是一個可接受的解決方案,因爲他們永遠不會知道這一點。所以我最終的解決方案是下載AngularJS並將其作爲一個JavaScript資源包含在我的JSF .war文件中。