Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery JCrop的IE问题_Jquery_Asp.net_Internet Explorer_Jcrop - Fatal编程技术网

Jquery JCrop的IE问题

Jquery JCrop的IE问题,jquery,asp.net,internet-explorer,jcrop,Jquery,Asp.net,Internet Explorer,Jcrop,我正在将jcrop用于我的aspx页面: <script type="text/javascript" src="../../Scripts/js/jquery.Jcrop.min.js"></script> <link rel="Stylesheet" href="../../Scripts/css/jquery.Jcrop.min.css" /> 以下是我的JCrop声明: <script type="text/javascript">

我正在将jcrop用于我的aspx页面:

<script type="text/javascript" src="../../Scripts/js/jquery.Jcrop.min.js"></script>
<link rel="Stylesheet" href="../../Scripts/css/jquery.Jcrop.min.css" />

以下是我的JCrop声明:

 <script type="text/javascript">
    $(document).ready(function () {
        $('#' + options.ImageID).Jcrop({
            onChange: function (coords) {
                $('#' + options.HiddenID).val(coords.x + ',' + coords.y + ',' + coords.w + ',' + coords.h);
            },
            aspectRatio: 1
        });
    });
</script>

$(文档).ready(函数(){
$('#'+options.ImageID).Jcrop({
onChange:函数(coords){
$(“#”+options.HiddenID.val(coords.x+”、“+coords.y+”、“+coords.w+”、“+coords.h);
},
方面:1
});
});
以下是我的.NET图像:

<asp:Image runat="server" ID="PhotoPreviewImage" />

options变量是在代码隐藏中创建的一个对象,用于将PhotoPreviewImage的ClientID传递给JS

这在Chrome中非常有效,但在IE9中不起作用(我甚至没有十字准线)

我正在使用jquery.Jcrop.min.js v0.9.10(构建:20120429)和jquery v1.7.1 jquery.com


如何在IE中实现这一点?

我过去在IE中遇到过一些JCrop问题。我通过向options对象添加“onSelect”和“onRelease”事件解决了这个问题。我不知道这对你的处境是否有帮助,但值得一试。我的代码如下所示:

.Net


Javascript:

<script>
$(document).ready(function () {
    var api = $.Jcrop('#cropbox', {
        aspectRatio: 1,
        onSelect: update,
        onChange: update,
        onRelease: update
    });
});

function update(c) {
    //Store coords here
}
</script>

$(文档).ready(函数(){
var api=$.Jcrop(“#cropbox”{
方面:1,
onSelect:update,
onChange:update,
onRelease:更新
});
});
功能更新(c){
//在这里存储coords
}

我最终不得不检测IE并使用以下两种格式之一进行初始化:

        var is_msie = /msie/.test(navigator.userAgent.toLowerCase());
        var jcrop_obj;

        if (is_msie) {
            jcrop_obj = jQuery.Jcrop('#img', {
                onSelect: jcrop_onEndCrop,
                minSize: [ 20, 20 ],
                setSelect: [ x, y, x2, y2 ],
                allowSelect: false
            });
        }
        else {
            jQuery('#img').Jcrop({
                onSelect: jcrop_onEndCrop,
                minSize: [ 20, 20 ],
                setSelect: [ x, y, x2, y2 ],
                allowSelect: false
            },function(){jcrop_obj = this;});
        }

这肯定修复了IE 10兼容模式的初始化问题。

你有javascript错误吗?@Aristos-我看不到任何东西:(我不得不修改它以传入ClientID而不是.NET图像控件的ID,但除此之外效果很好!编辑添加它似乎在Chrome中破坏了它,但我可以解决这个问题!这使它在IE中对我有效,但破坏了Safari。我最终不得不检测浏览器并使用API方法(与上面类似,唯一的区别是我将所有选项移到了一个单独的函数中)对于IE和所有其他浏览器…似乎在所有浏览器中都保持一致。只需删除一条评论,5个小时就可以找出为什么jCrop只在IE上刷新几次后才初始化,这就解决了所有问题:)你,先生,是一个英雄。但是为什么要检查浏览器而不是总是使用IE版本呢?@Thomastock:IE版本在Chrome上不起作用。嗯,在测试了5次之后,它在这里起作用。它“有时”起作用吗不行?@ThomasStock:实例化jcrop不是我的问题,但我必须动态切换映像并重置jcrop的实例。如果我没记错的话,jcrop_对象在我实现上述操作之前并不总是包含引用。不过,我不确定你的答案是什么意思。
        var is_msie = /msie/.test(navigator.userAgent.toLowerCase());
        var jcrop_obj;

        if (is_msie) {
            jcrop_obj = jQuery.Jcrop('#img', {
                onSelect: jcrop_onEndCrop,
                minSize: [ 20, 20 ],
                setSelect: [ x, y, x2, y2 ],
                allowSelect: false
            });
        }
        else {
            jQuery('#img').Jcrop({
                onSelect: jcrop_onEndCrop,
                minSize: [ 20, 20 ],
                setSelect: [ x, y, x2, y2 ],
                allowSelect: false
            },function(){jcrop_obj = this;});
        }