2014-12-01 3 views
0

Я собрал приложение AngularJS, обслуживаемое JSF/primefaces. Эта страница работает очень хорошо, если ее воспитывают с Chrome или IE, но если она воспитывается в Firefox, она не выполняет расширения AngularJS. Поэтому, когда я смотрел на консоли JS, я получаю следующее сообщение об ошибке в первой строке моего JS скрипта (reservation_list.js): AngularJS с JSF/Primefaces не работает в 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 в свою папку ресурсов и включите его через outputScript с заголовком 'target = ''. –

+0

Спасибо, что решает! К сожалению, я не видел вашего ответа, пока я уже не понял его. Ниже я приведу более подробное описание. – Yoshiya

ответ

0

Я нашел решение этой проблемы - и объяснение может быть частности, моя сетевая среда (которая обращается к интернету через прокси).

В нашей среде, когда мы получаем доступ HTTPS сайтов в первый раз, Firefox представляет нам следующий диалог предупреждает нас о ненадежной связи - возможно, сертификаты не могут быть доступны через наш прокси-сервер (не уверен точно):

Это соединение Untrusted

вы попросили Firefox подключить надежно ajax.googleapis.com

Обычно, когда вы пытаетесь подключиться надежно, сайты предварительно отправили доверенную идентификацию, чтобы доказать, что вы идут в нужном месте. Однако идентификатор этого сайта не может быть подтвержден .

Что мне делать?

Если вы обычно подключаетесь к сайту без проблем, эта ошибка может быть означает, что кто-то пытается олицетворять сайт, и вы не должны продолжить.

Очевидно, Firefox блокирует страницу от загрузки AngularJS на https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-rc.2/angular.min.js

Я получил тот же диалог, Firefox, когда я печатаю AngularJS URL непосредственно в адресной строке. Когда я добавляю исключение, моя страница отлично работает в Firefox. Это, конечно, не приемлемое решение для других пользователей с одинаковой конфигурацией сети, потому что они никогда не поймут это. Поэтому моим окончательным решением было загрузить AngularJS и включить его в мой JSF-файл .war как ресурс javascript.

Смежные вопросы