Sitecore 8体验编辑器和jquery

时间:2016-01-05 14:55:24

标签: javascript jquery highcharts sitecore sitecore8

以下javascript在页面编辑器模式下无效:

Page.ClientScript.RegisterStartupScript(this.GetType(),"script","<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js\"></script><script src=\"http://code.highcharts.com/highcharts.js\"></script>");

我把它改为:

Page.ClientScript.RegisterStartupScript(this.GetType(),"script","<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js\"></script><script src=\"http://code.highcharts.com/highcharts.js\"></script><script>scSitecore&&scSitecore.prototype.initializeModalDialogs()</script>");

但现在没有任何东西在页面编辑器模式下保存。

要在noConflict模式下包含jquery,我添加了以下代码行:

Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js\"></script><script src=\"http://code.highcharts.com/highcharts.js\"></script><script>jQuery.noConflict();window.onload = function(){var mainDiv = $( \"main\" );}</script>");

要包含高图我已经添加了一个ID为&#34的容器&#34;容器&#34;以及后面的代码行。在普通视图中,高图显示但不在页面编辑器模式下显示。

Page.ClientScript.RegisterStartupScript(this.GetType(), "charts", "<script src=\"containers.js\"></script>");

Container of Containers.js:

$(function () {
$('#containers').highcharts({
    title: {
        text: 'Monthly Average Temperature',
        x: -20 //center
    },
    subtitle: {
        text: 'Source: WorldClimate.com',
        x: -20
    },
    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
            'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },
    yAxis: {
        title: {
            text: 'Temperature (°C)'
        },
        plotLines: [{
            value: 0,
            width: 1,
            color: '#808080'
        }]
    },
    tooltip: {
        valueSuffix: '°C'
    },
    legend: {
        layout: 'vertical',
        align: 'right',
        verticalAlign: 'middle',
        borderWidth: 0
    },
    series: [{
        name: 'Tokyo',
        data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
    }, {
        name: 'New York',
        data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
    }, {
        name: 'Berlin',
        data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
    }, {
        name: 'London',
        data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
    }]
});

});

2 个答案:

答案 0 :(得分:2)

  

要避免在体验编辑器中编辑问题,请使用jQuery JavaScript   无冲突模式下的库。

     

请查看以下文章了解详情:   http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/

全部在kb.sitecore.net上的Sitecore文档中(请参阅https://kb.sitecore.net/articles/286042)。

修改

尝试将container.js代码包裹在:

(function ($) {
    ...
})(jQuery);

答案 1 :(得分:0)

我添加了以下代码行:

Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "<script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js\"></script><script src=\"http://code.highcharts.com/highcharts.js\"></script><script>jQuery.noConflict();window.onload = function(){var mainDiv = $( \"main\" );}</script>");

要包含高图我已经添加了一个ID为&#34的容器&#34;容器&#34;以及后面的代码行。在普通视图中,高图显示但不在页面编辑器模式下显示。

Page.ClientScript.RegisterStartupScript(this.GetType(), "charts", "<script src=\"containers.js\"></script>");