2015-04-14 20 views
0

我做JSF複合材料部件,簡單的東西用下面的代碼JSF複合材料部件的JavaScript的一部分時:(太FF)部分Chrome怪異的行爲調試

<cc:implementation componentType="timePickerComponent"> 

    <div id="#{cc.clientId}" style="#{cc.attrs.style}"> 

     <h:outputScript name="js/timepicker/timepicker_helper.js"/> 

      <p:autoComplete id="timepicker" 
        scrollHeight="200" 
        onfocus="openAutocompletePanel(this);" 
        widgetVar="#{cc.attrs.widgetVar}" 
        completeMethod="#{cc.completeMethod}" 
        value="#{cc.timeLocal}" 
        size="5"/> 


    </div> 

</cc:implementation> 

而且timepicker_helper.js只含有單一的功能:

function openAutocompletePanel(field){ 
    console.log("ups"); 
    console.log(field); 
} 

當我嘗試調試在Chrome開發者工具openAutocompletePanel功能,在開頭或不工作的函數中定義,即斷點。但函數本身被調用,它打印到控制檯。

當我在openAutocompletePanel的中間添加的行debugger;,它已停止在這一點上,但不是文件timepicker_helper.js Chrome在打開的文件VM3339

有我的屏幕快照: enter image description here

這不是我第一次調試JSF的Chrome瀏覽器JavaScript,但我第一次認識了這個問題。什麼會導致這種行爲?

謝謝。

更新:

好的,這是我的錯。 BalusC說,很多時候,當你有的JavaScript複合材料部件應指定target="head"否則會被加載多個時間。 當我將加載語句更改爲<h:outputScript name="js/timepicker/timepicker_helper.js" target="head"/>時,問題消失了。 我不能認爲這是答案,因爲我不知道100%,如果我是對的。

+0

它與另一個普通的jsf組件而不是p:autocomplete一起工作嗎? – Kukeltje

+0

@Kukeltje,no。我嘗試添加'',並打開帶有不同名稱VM4037的選項卡,但未到達實際文件。 – Anatoly

+0

我懷疑它是有意的行爲,但不確定。剛剛檢查了我的舊代碼,這是我第一次在這種情況下使用'javascript',以及複合組件中的JSF元素並通過''加載頁面。 – Anatoly

回答

1

對不起,不能把它變成註釋,所以把它作爲一個答案......

如果timepicker_helper.js裝入,並JavaScript的eval();功能執行的這種行爲可能是。

在這種情況下,開發者控制檯會顯示包含原始文件的公共文件,如您所看到的:VM3339。 和debugger;是在這種情況下打破內部的唯一途徑。

+0

謝謝。它讓事情變得更加清晰,但我仍然不明白它是否是JSF場景中的預期行爲。 – Anatoly

+0

如果您通過