Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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
无法使用javascript插件在第一次运行时加载实际图像大小(图像在刷新后加载)_Javascript_Jquery_Image_Html5 Canvas - Fatal编程技术网

无法使用javascript插件在第一次运行时加载实际图像大小(图像在刷新后加载)

无法使用javascript插件在第一次运行时加载实际图像大小(图像在刷新后加载),javascript,jquery,image,html5-canvas,Javascript,Jquery,Image,Html5 Canvas,我正在使用javascript插件对图像进行注释。我无法在第一次运行时加载精确大小的图像,但在刷新页面时它会工作。当我在下面的代码中尝试在函数内部执行window.onload时,它会加载图像,但会删除注释 <script type="text/javascript"> $(document).ready(function() { $.ajax({ url..... success:function(data){

我正在使用javascript插件对图像进行注释。我无法在第一次运行时加载精确大小的图像,但在刷新页面时它会工作。当我在下面的代码中尝试在函数内部执行window.onload时,它会加载图像,但会删除注释

<script type="text/javascript">
       $(document).ready(function() {
        $.ajax({
          url.....

      success:function(data){

       //adding data to div 
      $("#imgID").append($("<img src="" id="" />"));

       //then calling this method
 function annotateAllImages(id) {
 $(window).load(function() {
    $("#"+id).annotateImage({
        getUrl: id+'/getAnnotationData',
        saveUrl: id+'/saveData',
        deleteUrl: id+'/deleteData',
        editable: true,
        useAjax: true,
                });
           });
        }
</script>

$(文档).ready(函数(){
$.ajax({
url。。。。。
成功:功能(数据){
//向div添加数据
$(“#imgID”)。追加($(“”);
//然后调用这个方法
函数注释所有图像(id){
$(窗口)。加载(函数(){
$(“#”+id).注释图像({
getUrl:id+'/getAnnotationData',
saveUrl:id+'/saveData',
deleteUrl:id+'/deleteData',
是的,
是的,
});
});
}

我尝试对完整的脚本执行$(window).load(function(){),但仍然不起作用。画布的创建和内容都是在我使用的插件中完成的。非常感谢任何帮助。

这个问题可以通过对每个图像分别应用
$.load
函数中的所有图像编辑来解决

这是因为每个元素的源标记都是在ajax调用后动态设置的,因此每个图像都需要更多的异步时间

作为参考,代码段如下所示:

function annotateAllImages(id) {
    $("#"+id).load(function(){
        $(this).annotateImage({
            getUrl: id+'/getAnnotationData',
            saveUrl: id+'/saveData',
            deleteUrl: id+'/deleteData',
            editable: true,
            useAjax: true,
        });
    });
}

您可以添加调用annotateAllImages的位置吗?我怀疑您在ajax调用之外调用它,这意味着它可能会在所有图像加载之前运行。嗨,kaminari,我在ajax调用中添加了两个函数,一个用于将图像添加到div,然后我在ajax调用中调用一个函数,如下面的函数,这将调用notate AllImages var imgs=document.getElementsByTagName(“img”);AnnotateImageId(imgs);仅供参考这是代码下面是它在第一次运行时的外观,当我在初步浏览代码、库和图像后刷新它时,我注意到您没有使用$(window).load。库提到没有使用$(document).ready,而不是$(window).load。您是否尝试使用$(window).load来包装所有相关脚本,而不仅仅是annotateAllImages函数中的内容?也就是说,将$(document).ready替换为$(window).load。谢谢您的时间。