2013-08-23 105 views
1

一個main.xhtml頁面包含:錯誤的JavaScript包括

<script src="#{applicationBean.resourcePath}/admin/js/jquery.min.js"></script> 
    <script src="#{applicationBean.resourcePath}/admin/js/jquery.actual.min.js"></script> 
    <script src="#{applicationBean.resourcePath}/admin/bootstrap/js/bootstrap.min.js"></script> 

    <!-- smart resize event --> 
    <script src="#{applicationBean.resourcePath}/admin/js/jquery.debouncedresize.min.js"></script> 
    <!-- js cookie plugin --> 
    <script src="#{applicationBean.resourcePath}/admin/js/jquery.cookie.min.js"></script> 
    <!-- js ui --> 
    <script src="#{applicationBean.resourcePath}/admin/js/jquery-ui.custom.min.js"></script> 
    <!-- tooltips --> 
    <script src="#{applicationBean.resourcePath}/admin/lib/qtip2/jquery.qtip.min.js"></script> 
    <!-- jBreadcrumbs --> 
    <script src="#{applicationBean.resourcePath}/admin/lib/jBreadcrumbs/js/jquery.jBreadCrumb.1.1.min.js"></script> 
    <!-- sticky messages --> 
     <script src="#{applicationBean.resourcePath}/admin/lib/sticky/sticky.min.js"></script>   
    <!-- common functions --> 


    <script src="#{applicationBean.resourcePath}/admin/lib/validation/jquery.validate.min.js"></script> 


    <script src="#{applicationBean.resourcePath}/admin/lib/tinymce/tiny_mce/tiny_mce.js"></script>  






<script> 
    $.ajax({    
          type: 'POST', 
          url: '#{request.contextPath}/view/user/'+ page +'.xhtml', 

          success: function(data) { 
           $('#main_content').html(data); 

          } 
         }); 
<script> 

正如你可以看到上面我可以包括XHTML頁面(如頁面如下所示),main.xhtml從XHTML網頁

線(確切順序)

<!-- datatable --> 
    <script 
     src="#{applicationBean.resourcePath}/admin/lib/datatables/jquery.dataTables.min.js"></script> 
    <script 
     src="#{applicationBean.resourcePath}/admin/lib/datatables/extras/Scroller/media/js/Scroller.min.js"></script> 

    <link rel='stylesheet' 
     href='#{applicationBean.resourcePath}/admin/css/ui.dynatree.css' /> 

    <!-- validation --> 
    <script 
     src="#{applicationBean.resourcePath}/admin/lib/validation/jquery.validate.min.js"></script> 

    <!-- sticky messages --> 
    <script 
     src="#{applicationBean.resourcePath}/admin/lib/sticky/sticky.min.js"></script> 

    <script 
     src="#{applicationBean.resourcePath}/admin/bootstrap/js/bootstrap.min.js"></script> 


    <script 
     src='#{applicationBean.resourcePath}/admin/js/jquery.dynatree.js' 
     type='text/javascript'></script> 
    <script type='text/javascript' 
     src='http://localhost:9090/app/dwr/util.js'></script> 
    <script type='text/javascript' 
     src='http://localhost:9090/app/dwr/engine.js'></script> 
    <script type='text/javascript' 
     src='http://localhost:9090/app/dwr/interface/ldapService.js'></script><script src='#{applicationBean.resourcePath}/admin/js/custom/organization.js'></script> 

從organization.js甲線

treeDiv.dynatree('destroy'); 

我希望沒有錯誤,因爲「有時」它的工作原理,但有時給人「‘treeDiv.dynatree’是不是一個函數」

在鉻我可以看到開發者工具>網絡鏈接,點擊它並可以查看源:

jquery.dynatree.js?_=1377244144331 
+1

可能是錯誤的javascript的順序 – Praveen

+0

@ user1671639我更新了問題,謝謝 – merveotesi

+1

愚蠢的問題:你加載jQuery? –

回答

1

這可能是一個問題引起的放置JavaScript文件由於錯誤的順序。

請致電jquery.dynatree.js首先然後organization.js像下面一樣。

<script 
     src='#{applicationBean.resourcePath}/admin/js/jquery.dynatree.js' 
     type='text/javascript'></script> 

<script src='.../organization.js'type='text/javascript'></script> 

從你更新的問題:

「有時」它的工作原理,但有時給人「‘treeDiv.dynatree’是不是一個函數」

有可能造成一些其他的js文件的問題。

+0

我更新了問題 – merveotesi

+0

由於您提到的有時可行,很少有澄清包括'jQuery'和'jQuery UI'? – Praveen

1

如果我正確理解您的體系結構(我不確定自己的結構),那麼您的單頁應用程序位於main.xhtml。該應用程序利用AJAX來加載這似乎是一個完整的XHTML文檔,然後插入父頁面的HTML:

$('#main_content').html(data); 

無論JavaScript代碼,例如內頁包含依賴於文件裝載事件初始化可能不按預期工作。

例如,您加載organization.js,其中包含此:

treeDiv.dynatree('destroy'); 

...觸發:

'treeDiv.dynatree' 不是一個函數

那意味着當該行代碼運行時,treeDiv變量尚未正確初始化。

+0

是的,這是架構。當我將dynatree.js添加到內部頁面和主頁面時,它不起作用,因爲我認爲包含雙重內容。因此,這個架構不是有解決方案嗎? – merveotesi

+0

@tuxi - 我已經更新了答案,以解釋您獲得的確切錯誤消息。你需要確保當'treeDiv.dynatree('destroy');'運行'treeDiv'變量時存在。 –

+0

' \t \t \t \t \t \t \t \t \t \t \t \t \t \t '我將所有這些粘貼到organization.xhtml中,它起作用,你一開始就是對的,它是關於jQuery的庫。但過了一段時間,它不會工作,因爲雙重定義。 – merveotesi