【问题标题】:Fancybox (v1.3.1) showActivity() shows inconsistently in Chrome/SafariFancybox (v1.3.1) showActivity() 在 Chrome/Safari 中显示不一致
【发布时间】:2012-07-10 14:53:34
【问题描述】:

我正在对fancybox 使用以下调用:$.fancybox.showActivity();显示加载动画。它适用于 Firefox 和 IE。然而,Chrome 和 Safari 非常不一致。因此,为了测试调用是否有问题,我创建了一个按钮并通过 JS 函数附加调用。当我单击按钮(以验证呼叫本身是否有效)然后按下实际上是我正在对其进行编码的按钮时,它就会起作用。但是,如果我不按(验证测试)按钮,而只按实际代码按钮,则它不会显示。我也可以在调试器中看到 div。这种不一致的功能有什么原因吗?

代码片段:

验证测试按钮:

<button type="button" onclick="checkFancybox();">Check Fancybox</button>            
<script>
function checkFancybox(){
$.fancybox.showActivity();
alert("Fancybox call completed.");
}
</script>

实际编码按钮:

<form id="video-upload-form" action="{url}?nexturl={nextUrl}" 
      method="post" enctype="multipart/form-data" >
<input name="file" type="file"/>
<input name="token" type="hidden" value=""/>
<input value="Upload Video File" type="button" name="submitVideoUpload" 
       onClick="checkFile()" class="button" />
</form>
<script> 
 function checkFile(){
    //RegEx for valid file name and extensions.
    var fileVal = document.forms["video-upload-form"].elements['file'].value;

    if(fileVal != ""){
      //notify user of activity
      $.fancybox.showActivity();
      document.getElementById('vintro-upload-form').submit();
    }else{alert('Please select the Video file.');}
 }
</script>

谢谢。

【问题讨论】:

    标签: jquery google-chrome safari webkit fancybox


    【解决方案1】:

    为了正确......如果你在 HTML 中钩住 js 函数,你最好使用

    <input value="Upload Video File" type="button" name="submitVideoUpload" 
       onClick="javascript:checkFile();" class="button" />
    

    “javascript:;”很重要。这样你就可以确保它在 x-browser 上运行。

    除此之外,您可能想这样尝试:

    <input id="mybutton" value="Upload Video File" type="button" name="submitVideoUpload" class="button" />
    <script>
    // Once the DOM is ready
    $(function(){
        // bind your function
        $("#mybutton").click(function(){ checkFile(); });
    });
    
    // define your function
    function checkFile(){
        //RegEx for valid file name and extensions.
        var fileVal = document.forms["video-upload-form"].elements['file'].value;
    
        if(fileVal != ""){
            //notify user of activity
            $.fancybox.showActivity();
            document.getElementById('vintro-upload-form').submit();
        }
        else { alert('Please select the Video file.'); }
    }
    </script>
    

    在 DOM 加载后绑定点击处理程序。这样,当处理程序真正找到要挂钩的 HTML 时,它就可以被挂钩。

    【讨论】:

    • 我按照你的建议做了,但这对我也没有帮助。我认为 webkit 处理提交的方式与 Firefox 和 IE 的处理方式有所不同。这就是造成问题的原因。我通过在 fancybox 调用后注释掉提交行来确定这一点,我的 fancybox 显示活动没有问题。
    • 所以它可以在我的本地主机上运行,​​但不能在开发服务器上运行。我在这里可能缺少什么?
    • 听起来像是加载问题。如果您使用开发人员工具栏(Firebug、IE 工具栏...),您是否会在 prd 服务器上收到错误请求(网络选项卡、网络选项卡)?你从谷歌代码加载 jquery 框架吗?加载这些脚本的顺序是什么? 1->外部 CSS 2->jquery.min.js 3->yourfunctions.js 4->yourdomreadyscripts.js
    • 任何 javascript 错误(在 firebug 中启用控制台)?这也可能会阻止您运行代码
    • 有一个 DOMEception,错误代码 12 是问题所在。我继续,只是在一个隐藏的
      中放置了一个动画 gif,当用户的视频被上传时它会显示出来。没有 javascript 错误。
    猜你喜欢
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 2013-11-27
    • 2015-12-17
    • 1970-01-01
    相关资源
    最近更新 更多