2016-08-18 46 views
1

我想要一個動畫在頁面加載時自動啓動。我在ons頁面的ons-template中使用了Onsen UI V2 JS Splitter示例。如何將js函數添加到ONSEN頁面加載? (monaca)

我發現,添加「/ ONS-頁」和「/插件模板」標籤之間的腳本標籤被讀取(這花了我不少時間......( - )

我跟着在guide

<script> 
document.addEventListener("init", function(event) { 
    if (event.target.id == "score.html") { 
    Progress1(); 
    } 
}, false); 
</script> 

但是什麼都沒有發生

我把它改爲:

.... HTML東西

</ons-page> 
    <script> 
    $(document).ready(function() {Progress1()}); 
    </script> 
    </ons-template> 

但現在無法找到HTML文件的組成部分,它說

Uncaught Error: container does noet exist #container1 www/lib/jquery-3.1.0.slim.min.js:2 

我能做些什麼?我現在用一個按鈕解決了它。這證明它的工作原理,但當然不會自動啓動。

任何想法......? 謝謝

回答

0

這看起來並不是達到目標的好方法。你應該使用Cordova Events或者,如果你需要等待溫泉被加載,ons.ready函數。這裏有一個例子:

<script> 
    ons.ready(function() { 
    //execute your code 
    }); 
</script> 

希望它能幫助!

+0

感謝您發表評論!不幸的是,它沒有幫助,我得到了相同的未捕獲錯誤。從同一個頁面上的按鈕調用相同的函數,效果很好......(這是一個謎)。 – Remzo

+0

這可能是因爲該元素尚未加載。如果你試圖訪問的元素不是onsen元素,'ons.ready'可能不起作用。 –

+0

我明白了!謝謝安迪。但是,爲什麼$(document).ready(function(){Progress1()});不行...?或者更好地問:我如何使它工作..? – Remzo

0

有了很多的幫助,這是一個有效的解決方案。這是檢查容器是否存在的時間間隔。它重複,直到容器在那裏,然後它調用該函數。在該函數中間隔被清除(所以它停止檢查)。

也見這裏:http://www.w3schools.com/js/js_timing.asp

var tryForContainer; 

function progression1Test(){ 
    tryForContainer = setInterval(checkIfContainerIsReady, 100); 
} 

function checkIfContainerIsReady(){ 
    //alert(document.getElementById('container1')); 
    if(document.getElementById('container1') !== null){ 
     Progress1(); 
    } 
}