Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Отложенный запуск скрипта (https://javascript.ru/forum/dom-window/54389-otlozhennyjj-zapusk-skripta.html)

akefa 15.03.2015 16:03

Отложенный запуск скрипта
 
Есть скрипт вывода диаграмм - CanvasJS, для отложенного запуска использую viewportChecker, то есть что бы скрипт запускался когда страница прокручивается до нужного элемента. Проблема в том что в таком виде (ниже пример) скрипт не работает, но если записать его например в custom.js и подключить файл то работает как надо, в чем может быть проблема?

<script>
jQuery('.chart').viewportChecker({
        classToAdd: 'animated fadeIn',
    offset: 100,
        callbackFunction: function(elem, action){
    jQuery(document).ready(function(){
    var chart = new CanvasJS.Chart("chartContainerPie2",
    {
            animationEnabled: true,
        legend:{
            verticalAlign: "bottom",
            horizontalAlign: "center"
        },
        data: [
        {       
            type: "pie",
            toolTipContent: "{legendText}: <strong>{y}%</strong>",
            indexLabel: "{label} {y}%",
            dataPoints: [
                {  y: 35, legendText },
                {  y: 20, legendText },
                {  y: 18, legendText },
                {  y: 15, legendText },
                {  y: 5, legendText   },
                {  y: 7, legendText   }
            ]
    }
    ]
    });
    chart.render();
  }
             )}, 
});
</script>


<div class="chart" id="chartContainerPie2" style="height: 300px; float: left;width: 60%;"></div>

рони 15.03.2015 16:44

akefa,
строка 6 должна быть максимум нулевой

akefa 15.03.2015 17:07

В таком варианте вообще отказывается работать (

рони 15.03.2015 17:21

akefa,
строки 31 и и часть 32 вы тоже пренесли вниз?

рони 15.03.2015 17:23

akefa,
jQuery(document).ready(function() {
    jQuery('.chart').viewportChecker({
        classToAdd: 'animated fadeIn',
        offset: 100,
        callbackFunction: function(elem, action) {

            var chart = new CanvasJS.Chart("chartContainerPie2", {
                animationEnabled: true,
                legend: {
                    verticalAlign: "bottom",
                    horizontalAlign: "center"
                },
                data: [{
                    type: "pie",
                    toolTipContent: "{legendText}: <strong>{y}%</strong>",
                    indexLabel: "{label} {y}%",
                    dataPoints: [{
                        y: 35,
                        legendText
                    }, {
                        y: 20,
                        legendText
                    }, {
                        y: 18,
                        legendText
                    }, {
                        y: 15,
                        legendText
                    }, {
                        y: 5,
                        legendText
                    }, {
                        y: 7,
                        legendText
                    }]
                }]
            });
            chart.render();
        }
    })
});

akefa 15.03.2015 17:52

Да, именно так и сделал, и перестало все вовсе отображаться

akefa 15.03.2015 17:54

Полный код графика, так он работает в тегах <script> но мне нужно что бы он запускался viewportChecker ом в этих тегах, но почему то выше приведенный код работает только если подгрузить его через custom.js

<script type="text/javascript">
  window.onload = function () {
    var chart = new CanvasJS.Chart("chartContainer",
    {
      title:{
      text: "Try Various Chart Types"
      },
      data: [
      {
        type: "column", //change type to bar, line, area, pie, etc
        dataPoints: [
        { x: 10, y: 71 },
        { x: 20, y: 55},
        { x: 30, y: 50 },
        { x: 40, y: 65 },
        { x: 50, y: 95 },
        { x: 60, y: 68 },
        { x: 70, y: 28 },
        { x: 80, y: 34 },
        { x: 90, y: 14}

        ]
      }
      ]
    });

    chart.render();
  }
  </script>

рони 15.03.2015 18:00

akefa,
консоль смотрели на предмет ошибок

akefa 15.03.2015 18:06

Когда подгружаю через custom.js - в консоле все чисто.
Если между тегами <script> - в консоле ошибка "Uncaught TypeError: undefined is not a function", в строке jQuery('.chart2').viewportChecker({

akefa 15.03.2015 18:08

полный код
<script>
jQuery('.chart2').viewportChecker({
        classToAdd: 'animated fadeIn',
	offset: 100,
        callbackFunction: function(elem, action){
    jQuery(document).ready(function(){
	var chart = new CanvasJS.Chart("chartContainerPie2",
	{
            animationEnabled: true,
		legend:{
			verticalAlign: "bottom",
			horizontalAlign: "center"
		},
		data: [
		{       
			type: "pie",
			toolTipContent: "{legendText}: <strong>{y}%</strong>",
			indexLabel: "{label} {y}%",
			dataPoints: [
				{  y: 35, legendText: "Маркетинг", exploded: true, label: "Маркетинг" },
				{  y: 20, legendText: "Менеджмент", exploded: true, label: "Менеджмент" },
				{  y: 18, legendText: "Бизнес план", exploded: true, label: "Бизнес план" },
				{  y: 15, legendText: "Товар", exploded: true, label: "Товар"},
				{  y: 5, legendText: "Идея", label: "Идея" },
				{  y: 7, legendText: "Реализация", label: "Реализация"}
			]
	}
	]
	});
    chart.render();
  }
		     )}, 
});
</script>


<div class="chart2 animated" id="chartContainerPie2" style="height: 300px; float: left;width: 60%;"></div>


Часовой пояс GMT +3, время: 11:01.